RabbitMQ(五) ——话题模式

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

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python读书笔记

python 数据分析基础 day8-pandas读写多个excel文件

今天是读《python数据分析基础》的第8天,今天的读书笔记的内容为利用pandas读写多个excel文件,当中涉及到读写excel文件的多个工作表。 大致原...

3386
来自专栏腾讯玄武实验室的专栏

Chrome PDFium 整数截断漏洞分析

本文通过介绍漏洞 5 大原理进而进行 POC 分析、zlib 分析、FlateUncompress 分析等漏洞分析,并进行 gdb 调试,最终完成补丁分析。

2090
来自专栏北京马哥教育

Linux自动化运维工具之ansible(二)

糖豆贴心提醒,本文阅读时间8分钟 YAML简介 YAML是一个可读性高的用来表达资料序列的格式。 YAML参考了其他多种语言,包括:XML、C语言、Pytho...

2556
来自专栏Java学习网

Java中文乱码问题分析与标本兼治的方法

你是否遇到过这种情景,代码都写OK了,测试也没问题,但一运行发现显示的是乱码,这下坏了,明天还要给客户做演示汇报,现在已经到晚上22点了,别无选择,只能连夜查找...

2098
来自专栏linux驱动个人学习

VFS四大对象之二 struct inode

继上一篇文章:https://cloud.tencent.com/developer/article/1053842 二、inode结构体:(转自http://...

4237
来自专栏Python攻城狮

Redis的安装及基本使用1.Redis2.Redis安装3.redis常见配置4.redis数据操作5.redis发布订阅6.主从双备

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings), ...

451
来自专栏Golang语言社区

Golang语言-- gorilla/mux类库解析

golang自带的http.SeverMux路由实现简单,本质是一个map[string]Handler,是请求路径与该路径对应的处理函数的映射关系。实现简单功...

3546
来自专栏Java Edge

操作系统之文件管理概述1 文件和文件系统3 目录管理4 文 件 共 享5 文件保护5.1.1 访问矩阵的实现6 文件物理结构(重点)2文件存储空间管理(重点)

27710
来自专栏腾讯数据库技术

Linux删除文件过程解析

1882
来自专栏铭毅天下

实战 | Elasticsearch打造知识库检索系统

题记 源自“死磕Elasticsearch”技术群里的讨论问题: ——我想用es做个类似于知识库的东西,所以需要索引一些pdf、word之类的文件,这个你...

5517

扫描关注云+社区