RabbitMQ——Hello World
引言
点对点,一个生产者,一个消费者,一个队列。
编码
生产者
public class Producer {
// 定义一个队列名称
public static final String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost"); //填写rabbitmq的服务器地址
connectionFactory.setUsername("cjd"); // 用户名,默认是guest
connectionFactory.setPassword("123456"); // 密码,默认是guest
// 创建连接和信道
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
// 定义队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
// 定义消息
String message = "Hello World!";
// 发送消息
channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
System.out.println("消息发送完毕");
}
}
消费者
public class Consumer {
// 定义一个队列名称
public static final String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setUsername("cjd");
connectionFactory.setPassword("123456");
// 创建连接和管道
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
//推送的消息如何进行消费的接口回调
DeliverCallback deliverCallback=(consumerTag,delivery)->{
String message= new String(delivery.getBody());
System.out.println("接受消息成功:"+message);
};
//取消消费的一个回调接口 如在消费的时候队列被删除掉了
CancelCallback cancelCallback=(consumerTag)->{
System.out.println("消息消费被中断");
};
// 接收消息
channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);
}
}
测试