RabbitMq学习笔记(五)—— Topic
来源:互联网 发布:淘宝如何打印发货单 编辑:程序博客网 时间:2024/06/03 21:31
ReceiveTopicOne 匹配规则1//声明交换器和队列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); } ReceiveTopicTwo 匹配规则2//声明交换器和队列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); } TopicSend 发送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 bindingKey : routingKeys) { channel.queueBind(queueName, EXCHANGE_NAME, bindingKey); }
用三个关键字来绑定,Q1绑定关键字是【.orange.】,Q2绑定关键字是【..rabbit】和【lazy.#】,然后分析会发生什么:
Q1会收到所有orange这种颜色相关的消息
Q2会收到所有rabbit这个动物相关的消息和所有速度lazy的动物的消息
分析:
生产者发送“quick.orange.rabbit”的消息,两个队列都会收到
生产者发送“lazy.orange.elephant”,两队列也都会收到。
生产者发送”quick.orange.fox”,那么只有Q1会收到。
生产者发送”lazy.brown.fox”,那么只会有Q2能收到。
生产者发送”quick.brown.fox”,那么这条消息会被丢弃,谁也收不到。
生产者发送”quick.orange.male.rabbit”,这个消息也会被丢弃,谁也收不到。
生产者发送”lazy.orange.male.rabbit”,这个消息会被Q2的【lazy.#】规则匹配上,发送到Q2队列中。
注意
交换器在匹配模式下:
如果消费者端的路由关键字只使用【#】来匹配消息,在匹配【topic】模式下,它会变成一个分发【fanout】模式,接收所有消息。
如果消费者端的路由关键字中没有【#】或者【*】,它就变成直连【direct】模式来工作。
0 0
- RabbitMq学习笔记(五)—— Topic
- RabbitMq学习笔记(三)—— 交换器(Pub/Topic)
- RabbitMQ学习(五)之主题topic(java)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- RabbitMQ (五)主题(Topic)
- Java Socket 编程
- python 多线程遍历windows盘符下文件操作
- 2017计划
- Flume的安装和测试
- 链表应用--PAT.1097.Deduplication on a Linked List
- RabbitMq学习笔记(五)—— Topic
- / ./ ../的区别
- Windows/Ubuntu操作系统下ArduPilot(APM)固件的编译方法
- 局部变量,外部变量,static局部变量,static外部变量
- 在毕设开发中遇到的问题1
- iOS 语音录制及播放,类似微信手势脱出取消,拖回继续录制。
- ThreadLocal详解
- 仿QQ音乐的歌词滚动
- 百度Ueditor改变图片上传路径