RabbitMQ Topics
来源:互联网 发布:监测他人网络 编辑:程序博客网 时间:2024/06/05 20:42
消息生产者
package com.gch.rabbit.topic;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;public class TopicSend { private static final String EXCHANGE_NAME = "topic_logs"; public static void main(String[] argv) { Connection connection = null; Channel channel = null; try { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); connection = factory.newConnection(); channel = connection.createChannel(); //声明一个匹配模式的交换器 channel.exchangeDeclare(EXCHANGE_NAME, "topic"); // 待发送的消息 String[] routingKeys = new String[]{"quick.orange.rabbit", "lazy.orange.elephant","quick.orange.fox","lazy.brown.fox", "quick.brown.fox","quick.orange.male.rabbit","lazy.orange.male.rabbit"}; //发送消息 for(String severity : routingKeys){ String message = "发送路由字段:"+severity; channel.basicPublish(EXCHANGE_NAME, severity, null, message.getBytes()); System.out.println("匹配交换器发送" + severity + "," + message); } } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { try { connection.close(); } catch (Exception ignore) { } } } }}
1号消息消费者
package com.gch.rabbit.topic;import com.rabbitmq.client.AMQP;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.Consumer;import com.rabbitmq.client.DefaultConsumer;import com.rabbitmq.client.Envelope;import java.io.IOException;public class ReceiveLogsTopic1 { private static final String EXCHANGE_NAME = "topic_logs"; public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明一个匹配模式的交换器 channel.exchangeDeclare(EXCHANGE_NAME, "topic"); String queueName = channel.queueDeclare().getQueue(); //路由关键字 String[] routingKeys = new String[]{"*.orange.*"}; //绑定路由关键字 for (String bindingKey : routingKeys) { channel.queueBind(queueName, EXCHANGE_NAME, bindingKey); System.out.println("1号匹配交换器接:"+EXCHANGE_NAME+", 队列:"+queueName+", 绑定路由:" + bindingKey); } System.out.println("1号匹配交换器接正在等待消息..."); Consumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); System.out.println("1号匹配交换器收到消息:" + envelope.getRoutingKey() + "," + message); } }; channel.basicConsume(queueName, true, consumer); }}2号消息消费者
package com.gch.rabbit.topic;import com.rabbitmq.client.AMQP;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.Consumer;import com.rabbitmq.client.DefaultConsumer;import com.rabbitmq.client.Envelope;import java.io.IOException;public class ReceiveLogsTopic2 { private static final String EXCHANGE_NAME = "topic_logs"; public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明一个匹配模式的交换器 channel.exchangeDeclare(EXCHANGE_NAME, "topic"); String queueName = channel.queueDeclare().getQueue(); //路由关键字 String[] routingKeys = new String[]{"*.*.rabbit", "lazy.#"}; //绑定路由关键字 for (String bindingKey : routingKeys) { channel.queueBind(queueName, EXCHANGE_NAME, bindingKey); System.out.println("2号匹配交换器接:"+EXCHANGE_NAME+", 队列:"+queueName+", 绑定路由:" + bindingKey); } System.out.println("2号匹配交换器接正在等待消息..."); Consumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); System.out.println("1号匹配交换器收到消息:" + envelope.getRoutingKey() + "," + message); } }; channel.basicConsume(queueName, true, consumer); }}
阅读全文
0 0
- RabbitMQ Topics
- rabbitmq学习5:Topics
- rabbitmq学习5:Topics
- RabbitMQ java Topics主题
- rabbitmq学习5:Topics
- RabbitMq之Routing,Topics
- 七、rabbitMQ Topics
- RabbitMQ之Topics
- RabbitMQ 之五 Topics
- python系列之 RabbitMQ -- TOPICS
- Rabbitmq教程翻译(五)Topics主题
- RabbitMQ学习笔记六:话题(Topics)
- RabbitMQ 学习笔记(五):Topics
- RabbitMQ入门教程(七):主题交换机Topics
- Topics
- RabbitMQ学习(五).NET Client之Topics
- RabbitMQ学习小结(五)—— Topics[Python]
- SpringBoot的RabbitMQ消息队列: 六、第五模式"Topics"
- 两个有序链表序列的合并
- SpringMVC编码拦截配置
- git 删除文件
- pandas—数据聚合与分组运算
- ROS执行rosrun rqt_graph报错No module named 'catkin_pkg'
- RabbitMQ Topics
- hibernate session.delete方法原理
- Nginx之反向代理与真实ip地址丢失-yellowcong
- HDU
- Atom-使用Markdown画流程图
- Python编程技巧-根据条件从list dict set中筛选数据
- PAT乙级题1028.人口普查
- DRBD+Heartbeat+Mysql
- 51talk-1 My birthday is coming