2:rabitMQ 简单队列
程序员文章站
2022-03-09 15:36:43
...
简单队列如图
代码快速理解:
1:谁 给 谁 发送消息(简答是一对一的操作)必定是要建立一个连接,没有连接不可能发送消息。
2:消息顺着 通道(要指定通道名) 从生产者 向消费者方向流动。
OK,这是一个基本的流程。代码演示。连接代码看上一篇 1:rabitMQ 建立连接
生产者:
public void producer() throws IOException, TimeoutException { // 由连接创建一个通道 Channel channel = connection.createChannel(); // 在这个通道内 声明出传输的队列 channel.queueDeclare(QUEUENAME,false,false,false,null); // 准备消息 String msg="hello rabit"; // 生产者发布消息 通过这个通道发布出去 channel.basicPublish("",QUEUENAME,null,msg.getBytes()); }
在控制台 我们会看到 多了一个消息等待有人来消费掉
选择name
在这里可以看到已经加入到队列中
消费者
消费者同样需要知道 连接 和 在哪个通道中获取消息
所以实现消费步骤如下
1:建立连接 声明通道
2:定义一个消费者
3:等待消费
// 连接创建一个通道 Channel channel = connection.createChannel(); // 在该通道中声明队列 channel.queueDeclare(QUEUENAME,false,false,false,null); // 声明完队列 声明哪个消费者来消费 QueueingConsumer consumer=new QueueingConsumer(channel); // 启用这个消费者 channel.basicConsume(QUEUENAME, true, consumer); while(true){ //等会下一个消息 并返回 QueueingConsumer.Delivery delivery = consumer.nextDelivery(2000);//设置超时时间 byte[] body = delivery.getBody(); System.out.println(new String(body)); }
这个案例 生产消费这 写在一个类里面,生产 消费各是一个方法。