创建生产者步骤
- 创建工厂 connectionFactory
- 获取连接
- 通过connection创建一个channel
- 发布消息
4.1. 指定 exchange(交换机)
4.2. 指定 routing key(路由规则,路由到哪一个queue)
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class producer {
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setPort(5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
Connection connection = connectionFactory.newConnection();
Channel chennel = connection.createChannel();
for(int i = 0; i < 5; i++){
String msg = "hello rabbitmq";
chennel.basicPublish("", "test001", null, msg.getBytes());
}
chennel.close();
connection.close();
}
}
创建消费者步骤
- 创建工厂 connectionFactory
- 获取连接
- 通过connection创建一个channel
- 声明一个队列(queue)
- 创建消费者
- 设置channel
- 获取消息
import com.rabbitmq.client.*;
import javax.security.auth.callback.Callback;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Consumer {
public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setPort(5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
String queueName = "test001";
channel.queueDeclare(queueName, true, false, false, null);
QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
channel.basicConsume(queueName, true, queueingConsumer);
while (true){
QueueingConsumer.Delivery delivery = queueingConsumer.nextDelivery();
String msg = new String(delivery.getBody());
System.out.println(msg);
}
}
}