RabbitMQ-topic主题模式

RabbitMQ-topic主题模式


     Topic: 所有符合routingKey(此时可以是一个表达式)的routingKey所绑定的队列可以接收消息;

     发送到topic类型交换机的消息的routing_key不能随便设置–它必须是多个单词组成,用点分割。单词可以是任意的,但它们通常指定连接到该消息的某些功能。例如:“stock.usd.nyse”,“nyse.vmw”,“quick.orange.rabbit”。路由关键字可包含任意多的单词,但最高限制是255字节。

     绑定的关键字必须有相同的格式。topic交换机和direct交换的逻辑是相似的–拥有特定的路由关键字的消息将被发送到所有匹配关键字的队列。然而,绑定关键字有两个特殊的情况:
(1)* (星号) 可以代替一个完整的单词.
(2)# (井号) 可以代替零个或多个单词.

举例说明:
在这里插入图片描述
     在这个例子中,我们将发送描述动物的消息。这些消息的路由关键字由三个单词(两个点)组成。路由关键字的第一个单词描述速度,第二个描述颜色,第三个描述物种:“..”。
     建立三个绑定: Q1绑定关键字".orange." ,Q2绑定关键字"..rabbit"和"lazy.#".
这些绑定可以概括为:
• Q1对所有橙色的动物感兴趣。
• Q2希望接收所有关于兔子和一切有关懒惰的动物的消息。

     现在发送几个不同的routing_key消息:
(1)“quick.orange.rabbit”的消息将被传递到两个队列。
(2)“lazy.orange.elephant”消息也被发送到两个队列。
(3)“quick.orange.fox”消息只会到第一队列,
(4)“lazy.brown.fox”消息只会到第二个。
(5)“lazy.pink.rabbit”消息只会被发送给第二队列一次,即使它匹配两个绑定。
(6)“quick.brown.fox”消息不匹配任何绑定,所以它会被丢弃。
(7)“orange”或“quick.orange.male.rabbit”,这些消息将不会匹配任何绑定,将会被丢弃。
(8)“lazy.orange.male.rabbit”消息即使有四个词,但匹配最后一个绑定,将被发送到
第二个队列(因为第一个绑定使用的都是*,只能匹配一个完整的单词,而第二个绑定后面是#,可以匹配零个或多个完整的单词).

     当队列以‘#’作为绑定关键字,该队列将会接收所有的消息,和fanout一样,忽略消息的绑定关键字。
     当绑定关键字中没有‘*’和‘#’时,topic类型交换机就和direct类型交换机一样。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simple Simple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值