前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ(五) ——话题模式

RabbitMQ(五) ——话题模式

作者头像
用户1327360
发布2018-03-07 15:35:57
1.2K0
发布2018-03-07 15:35:57
举报
文章被收录于专栏:决胜机器学习决胜机器学习

RabbitMQ(五)——话题模式

(原创内容,转载请注明来源,谢谢)

一、概述

话题模式(topic)可以让队列绑定某一类型的消息,而不仅仅是direct模式下的具体的消息。即,其允许绑定的信息采用通配符。可以保证多重条件下,仍具备灵活性。但是,当routing key没有匹配时,仍然会丢弃消息。

话题模式如下图所示:

二、话题模式的交换机(topic exchange)

该模式下,routing key更加灵活,支持通配符。但是,并没有正则表达式那么强大的匹配,其主要支持两个通配符。匹配是以单词作为一个整体,每个单词由点(.)隔开。通配符如下:

1)*

星号表示匹配一个单词。

2)#

井号表示匹配0个或任意个单词。

RabbitMQ规定,每个routing key的大小不能超过255字节(bytes),因此在范围内,可以任意给key取名。

另外,fanout和direct可以看成是特殊的topic。

1)fanout

当topic模式下,每个队列的routing key都就用一个#,则任意内容都会发送给全部的队列,则和fanout是一致的。

2)direct

当topic模式下,每个队列的routing key都不用*、#这两个通配符,则每个队列都只监听精准的routing key,则和direct是一致的。

三、匹配实例

如话题模式的图片中,队列q1绑定*.orange.*,q2绑定*.*.rabbit和lazy.#,则三个单词的情况下,中间单词是orange的会发给q1,最后一个单词是rabbit的会发给q2。任意lazy开头的单词(不管总单词数)都会发给q2。

例如,当routing key是:

1)quick.orange.rabbit发送给q1

2)lazy.orange.elephant发送给q1和q2

3)lazy.brown.fox 发给q2

4)quick.red.rabbit发给q2

5)orange 谁都不发送,被丢弃

6)lazy.orange.male.rabbit发给q2

——written by linhxx 2017.08.23

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决胜机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档