RabitMQ---Topics

fanout exchange缺点:盲目广播,会忽略掉binding key的value。

direct exchange: 不能基于多个标准进行路由。

topic exchange:

发送到topic exchange的message不能有任意的routing_key,必须是单词列表,有点号分隔。单词可以是任意的,但是通常他们都代表连接到message的一些特征。

一些合法的routing key例子:"stock.usd.nyse", "nyse.vmw","quick.orange.rabit".routing key里面可以有任意多单词,但是限制在255字节内。

binding key必须也是同样的形式。

topic exchange背后的逻辑与direct exchange类似:特定routing key的message将会被传递到所有binding key与message的routing key匹配的queue里面。

注意:这里有两个特例:

1. * (星号) 能够准确替代一个单词

2. #(井号)能够替换零个或多个单词。


由上图可知:

我们将发送的消息是描述动物的。

routing key的第一个单词代表速度,第二个代表颜色,第三个代表种类。

Q1与"*.orange.*"绑定,Q2与"*.*.rabbit"和"lazy.#."绑定。

简单描述:

Q1对所有的orange动物感兴趣;

Q2对所有的兔子以及所有懒惰的动物感兴趣

一个message的routing key "quick.orange.rabbit"将会被路由到Q1和Q2;

routing key为"quick.orange.fox"将会被路由到Q1;

routing key为"lazy.brown.fox"将会路由到Q2  ;

routing key为"lazy.pink.rabbit"将会路由到Q2一次,即使匹配Q1与Q2

routing key 为"quick.brown.fox"没有任何匹配,因此将会被丢弃。

如果routing key为"orange"或者"quick.orange.male.rabbit",那么该消息将被丢弃。

routing key 为"lazy.orange.male.rabbit"会被路由到Q2.

由上可见,topic exchange功能强大,可以像其他类型的exchange一样。

当queue与#绑定的时候,将会接收所有message。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值