- 根据多重标准接收消息(路由器类型为:topic)
- 代码基础: 易学笔记-RabbitMQ教程3:一个消息发给所有消费者(路由器类型为:fanout)
- 路由键的规则:
- 必须是一些单词的集合,而且中间用点号隔开,而且总长度不能超过255
- 不能出现*或者#
- 比如:stock.usd.nyse,nyse.vmw,quick.orange.rabbit
- 绑定键的规则
- 必须是一些单词的集合,而且中间用点号隔开,而且总长度不能超过255
- 特殊绑定
- *(星号)仅代表一个单词
- #(井号)代表任意个单词
- 路由键和绑定键的举例
- 比如:用三种属性描述动作消息:速度、颜色、物种:<speed>.<colour>.<species>
- 绑定键两种:
- Q1:*.orange.*
- Q2:
- *.*.rabbit
- lazy.#
- 路由键
- quick.orange.rabbit
- Q1:匹配 orange
- Q2:匹配 rabbit
- lazy.orange.elephant
- Q1:匹配 orange
- Q2:匹配 lazy
- quick.orange.fox
- Q1:匹配 orange
- Q2:完全不匹配
- lazy.brown.fox
- Q1:不匹配
- Q2:匹配 lazy
- lazy.pink.rabbit
- Q1:不匹配
- Q2:同时匹配rabbit和lazy,但是消息也是接收一次
- quick.brown.fox
- Q1:不匹配
- Q2:不匹配
- orange
- Q1:不匹配
- Q2:不匹配
- lazy .orange.male.rabbit
- Q1:不匹配
- Q2:匹配 lazy
- quick.orange.rabbit
- topic和fanout、direct
- 如果绑定键为一个 #,则与fanout等同
- 如果绑定键不包含任何的#和*,则与direct等同
- 新建生产者类:
- 新建消费者类:
- 测试:
- 消费者:按以下规则启动消费者
- 将String bingingKeys[] = {""}改为String bingingKeys[] = {"#"},启动第一个消费者;
- 再改为String bingingKeys[] = {"kern.*"},启动第二个消费者;
- 再改为String bingingKeys[] = {"*.critical"},启动第三个消费者;
- 再改为String bingingKeys[] = {"kern.*", "*.critical"},启动第四个消费者。
- 生产者:按以下规则分别启动,然后观察消费者
- 路由键为kern.critical 的消息:A critical kernel error;
-
[*] Waiting for messages. To exit press CTRL+C
topic: #
[x] Received 'kern.critical':'A critical kernel error.'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*
[x] Received 'kern.critical':'A critical kernel error.'
-
[*] Waiting for messages. To exit press CTRL+C
topic: *.critical
[x] Received 'kern.critical':'A critical kernel error.'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*,*.critical
[x] Received 'kern.critical':'A critical kernel error.'
-
- 路由键为kern.info 的消息:A kernel info;
-
[*] Waiting for messages. To exit press CTRL+C
topic: #
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
-
[*] Waiting for messages. To exit press CTRL+C
topic: *.critical 不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*,*.critical
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
-
- 路由键为auth.critical 的消息:A critical auth error;
-
[*] Waiting for messages. To exit press CTRL+C
topic: #
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
[x] Received 'auth.critical':'A critical auth error'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
-
[*] Waiting for messages. To exit press CTRL+C
topic: *.critical
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'auth.critical':'A critical auth error'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*,*.critical
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
[x] Received 'auth.critical':'A critical auth error'
-
- 路由键为cron.warn 的消息:A cron waning;
-
[*] Waiting for messages. To exit press CTRL+C
topic: #
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
[x] Received 'auth.critical':'A critical auth error'
[x] Received 'cron.warn':'A cron waning'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
-
[*] Waiting for messages. To exit press CTRL+C
topic: *.critical不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'auth.critical':'A critical auth error'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*,*.critical不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
[x] Received 'auth.critical':'A critical auth error'
-
- 路由键为kern的消息:A cron kern:
-
[*] Waiting for messages. To exit press CTRL+C
topic: #
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
[x] Received 'auth.critical':'A critical auth error'
[x] Received 'cron.warn':'A cron waning'
[x] Received 'kern':'A cron kern'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
-
[*] Waiting for messages. To exit press CTRL+C
topic: *.critical不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'auth.critical':'A critical auth error'
-
[*] Waiting for messages. To exit press CTRL+C
topic: kern.*,*.critical不匹配,不接收
[x] Received 'kern.critical':'A critical kernel error.'
[x] Received 'kern.info':'A kernel info'
[x] Received 'auth.critical':'A critical auth error'
-
- 路由键为kern.critical 的消息:A critical kernel error;
- 消费者:按以下规则启动消费者