RabbitMQ简单队列模式(Hello World)
生产者
public class Producer {
//队列名称
public static final String QUEUE_NAME = "hello";
public static void main(String[] args) throws Exception {
//1.创建一个连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
//2.设置工厂IP,连接RabbitMQ的队列
connectionFactory.setHost("192.168.xxx.xxx");
connectionFactory.setUsername("admin");
connectionFactory.setPassword("admin");
//3.创建连接
Connection connection = connectionFactory.newConnection();
//4.创建信道
Channel channel = connection.createChannel();
/**
* 5.声明一个队列
* 参数 1:队列名称
* 参数 2:队列里面的消息是否持久化到磁盘,默认情况消息存储在内存中
* 参数 3:该队列是否只供一个消费者进行消费,即是否进行消息共享,true表示可以多个消费者消费,false表示只能一个消费者消费
* 参数 4:是否自动删除队列,当最后一个消费者断开连接后,该队列是否自动删除,true表示自动删除,false表示不自动删除
* 参数 5:队列的其它一些参数集合
*/
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
/**
* 6.使用信道发送消息
* 参数 1:发送到哪个交换机
* 参数 2:路由的Key值
* 参数 3:其它一些参数
* 参数 4:本次发送的消息体
*/
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 Exception {
//1.创建一个连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
//2.设置工厂IP,连接RabbitMQ的队列
connectionFactory.setHost("192.168.xxx.xxx");
connectionFactory.setUsername("admin");
connectionFactory.setPassword("admin");
//3.创建连接
Connection connection = connectionFactory.newConnection();
//4.创建信道
Channel channel = connection.createChannel();
//5.声明接收消息回调函数 和 取消消息消费时的回调函数
DeliverCallback deliverCallback = (consumerTag, message) -> {
String msg = new String(message.getBody());
System.out.println(msg);
};
CancelCallback cancelCallback = (consumerTag) -> {
System.out.println("消息消费被中断");
};
/**
* 6.消费者消费消息
* 参数 1:消费哪个队列
* 参数 2:消费成功之后是否要自动应答
* 参数 3:消费者没有成功消费掉消息的函数回调
* 参数 4:消费者取消消费的回调
*/
channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);
}
}
执行测试