Rabbitmq的使用四_Java Client方式使用Topic模式


	Rabbitmq的使用四_Java Client方式使用Topic模式
[编程语言教程]

Rabbitmq的使用四_Java Client方式使用Topic模式

1.官方文档地址:https://www.rabbitmq.com/tutorials/tutorial-five-java.html

2.定义:topic和direct类似,也是将消息发送到RoutingKey和BindingKey相匹配的队列中,只不过可以模糊匹配。

RoutinKey为一个被“.”号分割的字符串

交换机和队列的绑定键也是一样的格式。

topic交换机发送给队列的消息,通过routingkey进行匹配。匹配上的队列都可以收到消息。

有两种重要的绑定键的特殊情况:

  * 号只能代替一个单词。
  # 号可以替换零个或多个单词。

 

 

技术图片技术图片

                        图一                                                图二

如图二所示:

在这个例子中,我们将发送所有描述动物的信息。消息将与一个routingkey一起发送,routingkey由三个单词(两个点)组成。路由key中的第一个词将描述速度,第二个词描述颜色,第三个词描述物种:

<speed>.<colour>.<species>

Q1队列和交换机之间通过 *.orange.* 绑定键进行绑定。Topic交换机X和Q2的绑定键有两个,分别是 *.*.rabbit   和lazy.#

这些绑定可以总结为:

  Q1队列对所有橙色的动物都感兴趣。

  Q2队列想收到关于兔子的一切消息,以及关于懒惰动物的一切消息。

主题交换机功能强大,可以像其他交换机一样工作。

模拟以下routintkey来验证topic交换机的使用

quick.orange.rabbit,将被传递到两个队列。
lazy.orange.elephant 将被传递到两个队列
quick.orange.fox 只会去第一个队列
lazy.brown.fox 只去第二个队列
lazy.pink.rabbit 只会传递到第二个队列一次,即使它匹配两个绑定
quick.brown.fox 不匹配任何绑定,因此将被丢弃
orange 或者 quick.orange.male.rabbit   这些消息不会匹配任何绑定,将会丢失
lazy.orange.male.rabbit 即使它有四个单词,也将匹配最后一个绑定,并将被传递到第二个队列。 
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Rabbitmq的使用四_Java Client方式使用Topic模式