RabbitMQ3.7.2入门到进阶之Topic主题模型
2018-02-01 17:15
453 查看
此套免费课程视频,本人录播到了腾讯课堂
更多请关注腾讯课堂牧码人或 登录网站http://www.51mmr.net
https://ke.qq.com/course/288116#tuin=5740604a
![](https://img-blog.csdn.net/20180201170801092?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzQxMjE5ODgw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
更多请关注腾讯课堂牧码人或 登录网站http://www.51mmr.net
https://ke.qq.com/course/288116#tuin=5740604a
主题模式
生产者
public class Send { private final static String EXCHANGE_NAME = "test_exchange_topic"; public static void main(String[] argv) throws Exception { // 获取到连接以及mq通道 Connection connection = ConnectionUtils.getConnection(); Channel channel = connection.createChannel(); // 声明exchange channel.exchangeDeclare(EXCHANGE_NAME, "topic"); // 消息内容 String message = "id=1001"; channel.basicPublish(EXCHANGE_NAME, "item.delete", null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'"); channel.close(); connection.close(); } }
消费者1
public class Recv { private final static String QUEUE_NAME = "test_queue_topic_1"; private final static String EXCHANGE_NAME = "test_exchange_topic"; public static void main(String[] argv) throws Exception { // 获取到连接以及mq通道 Connection connection = ConnectionUtils.getConnection(); final Channel channel = connection.createChannel(); // 声明队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); // 绑定队列到交换机 channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "item.update"); channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "item.delete"); // 同一时刻服务器只会发一条消息给消费者 channel.basicQos(1); // 定义队列的消费者 Consumer consumer = new DefaultConsumer(channel) { // 消息到达 触发这个方法 @Override public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body) throws IOException { String msg = new String(body, "utf-8"); System.out.println("[2] Recv msg:" + msg); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } finally { System.out.println("[2] done "); // 手动回执 channel.basicAck(envelope.getDeliveryTag(), false); } } }; boolean autoAck = false; channel.basicConsume(QUEUE_NAME, autoAck, consumer); } }
消费者2
public class Recv { private final static String QUEUE_NAME = "test_queue_topic_1"; private final static String EXCHANGE_NAME = "test_exchange_topic"; public static void main(String[] argv) throws Exception { // 获取到连接以及mq通道 Connection connection = ConnectionUtils.getConnection(); final Channel channel = connection.createChannel(); // 声明队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); // 绑定队列到交换机 channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "item.update"); channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "item.delete"); // 同一时刻服务器只会发一条消息给消费者 channel.basicQos(1); // 定义队列的消费者 Consumer consumer = new DefaultConsumer(channel) { // 消息到达 触发这个方法 @Override public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body) throws IOException { String msg = new String(body, "utf-8"); System.out.println("[2] Recv msg:" + msg); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } finally { System.out.println("[2] done "); // 手动回执 channel.basicAck(envelope.getDeliveryTag(), false); } } }; boolean autoAck = false; channel.basicConsume(QUEUE_NAME, autoAck, consumer); } }
相关文章推荐
- RabbitMQ3.7.2入门到进阶之路由模式(Routing)
- RabbitMQ3.7.2入门到进阶之工作队列消息应答ack与消息持久化durable
- RabbitMQ3.7.2入门到进阶之工作队列Work queues公平分发fair dispatch
- RabbitMQ3.7.2入门到进阶之订阅模式Publish/Subscribe
- RabbitMQ 笔记 - 主题(topic)篇
- RabbitMQ消息分发模式----"Topic"主题模式
- RabbitMQ入门教程(七):主题交换机Topics
- 概率主题模型简介 Introduction to Probabilistic Topic Models
- 概率主题模型简介 Introduction to Probabilistic Topic Models
- 主题模型(topic model)的提出及发展历史
- LDA主题模型三连击-入门/理论/代码
- 主题模型(topic model)的提出及发展历史
- RabbitMQ入门-Topic模式
- knowledge_based topic model - 基于知识的主题模型概述
- RabbitMQ消息分发模式----"Topic"主题模式
- (八)RabbitMQ消息队列-通过Topic主题模式分发消息
- RabbitMQ之主题(Topic)【译】
- RabbitMQ (五)主题(Topic)
- django models 模型 从入门到进阶
- RabbitMQ (五)主题(Topic)