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);