rabbitmq-01篇 简单队列模式

简单队列模式

  最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列。也称为点对点模式

  一个生产者 P 发送消息到队列 Q,一个消费者 C 接收

 

  P 表示为生产者 、C 表示为消费者,红色表示队列。

生产者部分代码:

 1         String QUEUE_NAME = "simple_queue";
 2 
 3         Connection connection = Mqfactory.getConnection();
 4 
 5         Channel channel = Mqfactory.getChannel(connection);
 6 
 7         /** 创建队列声明 参数详解参照博客 https://www.cnblogs.com/qiyongchu/p/15339301.html
 8         channel.queueDeclare(QUEUE_NAME, false, false, false, null);
 9 
10         String msg = "我是生产者生成的消息";
11 
12         System.out.println("生产者发送消息:" + msg);
13 
14         for (int i =0;i<100;i++){
15             /** 发送消息 */
16             String message = msg+i;
17             channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
18         }
19         channel.close();
20 
21         connection.close();

 

 消费者部分代码:

 1       String QUEUE_NAME = "simple_queue";
 2 
 3         Connection connection = Mqfactory.getConnection();
 4 
 5         Channel channel = Mqfactory.getChannel(connection);
 6 
 7         System.out.println("等待接收消息.........");
 8 
 9         //推送的消息如何进行消费的接口回调
10         DeliverCallback deliverCallback=(consumerTag, delivery)->{
11             String message= new String(delivery.getBody());
12             System.out.println(message);
13         };
14 
15         //取消消费的一个回调接口 如在消费的时候队列被删除掉了
16         CancelCallback cancelCallback=(consumerTag)->{System.out.println("消息消费被中断");};
17 
18         /**
19          * 消费者消费消息
20          * 1.消费哪个队列
21          * 2.消费成功之后是否要自动应答 true 代表自动应答 false 手动应答
22          * 3.处理推送过来的消息的回调函数
23          * 4.消费者取消消费的回调
24          */
25         channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);

 

  

posted @ 2021-09-27 14:38  代达罗斯之殇  阅读(45)  评论(0编辑  收藏  举报