目录

  • topic类型

    • 1、topic类型的exchange

topic类型

在上文中,尽管使用了direct类型的exchange对日志系统有所提升,但还是有一些限制(消息不能够基于多重因素来路由)。

在我们的日志系统中,希望不仅仅能够根据日志级别来订阅,还可以根据指定的routing key来订阅。你应该可以理解的,就如unix的系统日志工具,日志消息路由规则不仅仅基于日志级别(info/warn/crit…),还可以基于设备(auth/cron/kern...)

这样大大的提高的灵活性,例如我们可以只监听kern推送出来的error级别的日志。

为了在我们的日志记录系统中实现这样的功能,我们需要了解更多关于topic类型的exchange

1、topic类型的exchange

消息发送到topic类型的exchange上时不能随意指定routing_key(一定是指由一系列由点号连接单词的字符串,单词可以是任意的,但一般都会与消息或多或少的有些关联)。Routing key的长度不能超过255个字节;

Binding key也一定要是同样的方式。Topic类型的exchange就像一个直接的交换:一个由生产者指定了确定routing key的消息将会被推送给所有Binding key能与之匹配的消费者。然而这种绑定有两种特殊的情况

  • “*” 可以匹配一个单词,也只可以是一个单词
  • “#” 可以匹配多个单词,或者是0个

解释:

在这个例子中,我们将会发送一些描述动物的消息。Routing key的第一个单词是描述速度的,第二个单词是描述颜色的,第三个是描述物种的:“<speed>.<colour>.<species>”

这里我们创建三个Binding:Binding key为”*.orange.*”的Q1,和binding key为”*.*.rabbit”和”lazy.#”的Q2。

这些binding可以总结为:

  • Q1对所有橘色的(orange)的动物感兴趣;
  • Q2希望能拿到所有兔子的(rabbit)信息,还有比较懒惰的(lazy.#)动物信息。

一条以” quick.orange.rabbit”为routing key的消息将会推送到Q1和Q2两个queue上,routing key为“lazy.orange.elephant”的消息同样会被推送到Q1和Q2上。但如果routing key为”quick.orange.fox”的话,消息只会被推送到Q1上;routing key为”lazy.brown.fox”的消息会被推送到Q2上,routing key为"lazy.pink.rabbit”的消息也会被推送到Q2上,但同一条消息只会被推送到Q2上一次。

如果在发送消息时所指定的exchange和routing key在消费者端没有对应的exchange和binding key与之绑定的话,那么这条消息将会被丢弃掉。例如:"orange"和"quick.orange.male.rabbit"。但是routing为”lazy.orange.male.rabbit”的消息,将会被推到Q2上。

Topic类型的exchange

Topic类型的exchange是很强大的,也可以实现其它类型的exchange。

当一个队列被绑定为binding key为”#”时,它将会接收所有的消息,此时和fanout类型的exchange很像。
当binding key不包含”*”和”#”时,这时候就很像direct类型的exchange。

转载于:https://www.cnblogs.com/zhaod/p/11391607.html

6 交换机-topic类型相关推荐

  1. 003 Rabbitmq中交换机的类型

    一 注意点 在Rabbitmq之中,存在绑定键和路由键的概念. [1]绑定键 : 交换机和队列关系的一种描述. [2]路由键: 消息之中消息标签的内容,描述了消息最终到达哪些队列之中. 在Rabbit ...

  2. RabbitMQ入门学习系列(六) Exchange的Topic类型

    快速阅读 介绍exchange的topic类型,和Direct类型相似,但是增加了"."和"#"的匹配.比Direct类型灵活 Topic消息类型 特点是:to ...

  3. 以太网 VLAN数据帧格式、交换机接口类型介绍、u和t的区别和作用

    2.8.2 以太网 VLAN(VLAN数据帧格式.交换机接口类型) 原始的以太网数据帧没有802.1QTag字段,在网络中进行转发的时候能够被主机接收.解封查看. 而一但有了802.1Q Tag字段的 ...

  4. RabbitMQ 主题模式即topic类型交换机

    1.概述 类型是topic交换机的消息的routing key 不能随意写,必须满足一定的要求,它必须是一个单词列表,以点号分隔开,星号(*)可以代替一个单词,井号(#)可以代替零个或多个单词 2.举 ...

  5. 思科交换机各类型中字母的意思?

    24TC-L中各字母的意思分别指? 24TT-L中第二个T的意思? 2960和2960G的区别?基中G是什麽意思? F0/1和G0/1区别? 24代表是24个网络接口 第一个T表示TX,也就是所谓RJ ...

  6. 华为设备接口视图_华为设备的交换机接口类型介绍及配置

    博文大纲: vlan是什么? 华为交换机的三种接口模式: 1.access模式. 2.trunk模式. 3.hybrid模式. hybrid接口的工作原理. 华为设备的各种接口模式应用场景及配置. 一 ...

  7. ensp改变交换机接口类型

    问题描述:误将三层交换机的g0/0/2接口设成了access口,需改成trunk口 解决办法: 在修改链路类型时,如果接口上的VLAN配置不是缺省值,会出现报错提示:Error:Please rene ...

  8. 交换机接口类型Access和Trunk详解

    概述: Access 类型的端口:只能属于1 个VLAN,一般用于连接计算机的端口: Trunk 类型的端口:可以允许多个VLAN 通过,可以接收和发送多个VLAN 的报文,一般用于交换机之间连接的端 ...

  9. 路由器/交换机/网络类型/数据交换方式详解

    思维导图: 路由器 路由器是连接因特网中各局域网.广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号的设备.路由器是互联网络的枢纽. 路由器的工作原理:3层设备:当数据 ...

最新文章

  1. 牛客网——华为机试(题17:坐标移动)(Java)
  2. 斐波那契数列取模(大数)分治算法
  3. Centos7-install apache+mariadb+php
  4. NOIP2021:游记
  5. IC设计常用文件及格式介绍
  6. solr5.5.3+tomcat8部署
  7. poj3984(经典dfs)
  8. 标准c++读写ini文件类
  9. 《软件测试的艺术3》读书笔记
  10. 机械革命Z2air实现 Wake On Lan 远程开机
  11. flutter 国际化(组件英文转中文)
  12. swf播放器air android 版,网极SWF播放器(com.webgenie.swf.play) - 1.6.3 - 应用 - 酷安
  13. fHash(哈希校验工具)v2.1.9 绿色版
  14. python tkinter界面可视化工具
  15. 春风十里,美拉德在人人投等你!
  16. oracle 毫秒时间换mysql_Mysql与Oracle常用时间格式的转换
  17. php拆分excel,PHP如何切割excel大文件(附完整代码)
  18. 「数据库」Linux服务安装部署SQL Server -外网安全远程连接【端口映射】
  19. 洛谷 2448 无尽的生命
  20. 从威客到互联网进化论的五年历程

热门文章

  1. 笔记(用Python做些事情)--变量(数字、字符串)
  2. PHP快速排序(原地切分)
  3. OpenSSL 与 SSL 数字证书概念贴
  4. str()和repre()的区别
  5. CHARTING图表控件介绍及下载地址
  6. Android LinearLayout
  7. vim 块操作、多文件操作、多窗口操作命令
  8. aptana studio 汉化与安装 zencoding、spket 配置
  9. Hadoop HA 双namenode搭建
  10. 大数据实时推荐系统的思考