RabbitMQ消息队列(六):使用主题进行消息分发
来源:互联网 发布:知乎国外智慧城市案例 编辑:程序博客网 时间:2024/05/21 17:43
Consumer可以监听不同severity的log。但是,这也是它之所以叫做简单日志系统的原因,因为是仅仅能够通过severity设定。不支持更多的标准。
比如syslog unix的日志工具,它可以通过severity (info/warn/crit...) 和模块(auth/cron/kern...)。这可能更是我们想要的:我们可以仅仅需要cron模块的log。
为了实现类似的功能,我们需要用到topic exchange。
1. Topic exchange
对于Message的routing_key是有限制的,不能使任意的。格式是以点号“."分割的字符表。比如:"stock.usd.nyse", "nyse.vmw", "quick.orange.rabbit"。你可以放任意的key在routing_key中,当然最长不能超过255 bytes。
对于routing_key,有两个特殊字符(在正则表达式里叫元字符):
- * (星号) 代表任意 一个单词
- # (hash) 0个或者多个单词
请看下面一个例子:
Producer发送消息时需要设置routing_key,routing_key包含三个单词和两个点号。第一个key是描述了celerity(灵巧,敏捷),第二个是colour(色彩),第三个是species(物种):"<celerity>.<colour>.<species>"。
- Q1 感兴趣所有orange颜色的动物
- Q2 感兴趣所有的rabbits和所有的lazy的
比如routing_key是 "quick.orange.rabbit"将会发送到Q1和Q2中。消息"lazy.orange.elephant" 也会发送到Q1和Q2。但是"quick.orange.fox" 会发送到Q1;"lazy.brown.fox"会发送到Q2。"lazy.pink.rabbit" 也会发送到Q2,但是尽管两个routing_key都匹配,它也只是发送一次。"quick.brown.fox" 会被丢弃。
如果发送的单词不是3个呢? 答案要看情况,因为#是可以匹配0个或任意个单词。比如"orange" or "quick.orange.male.rabbit",它们会被丢弃。如果是lazy那么就会进入Q2。类似的还有 "lazy.orange.male.rabbit",尽管它包含四个单词。
Topic exchange和其他exchange
由于有"*" (star) and "#" (hash), Topic exchange 非常强大并且可以转化为其他的exchange:
如果binding_key 是 "#" - 它会接收所有的Message,不管routing_key是什么,就像是fanout exchange。
如果 "*" (star) and "#" (hash) 没有被使用,那么topic exchange就变成了direct exchange。
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发
- RabbitMQ消息队列(六):使用主题进行消息分发(转)
- RabbitMQ(六):使用主题进行消息分发
- (六)RabbitMQ消息队列-消息任务分发与消息ACK确认机制(PHP版)
- (八)RabbitMQ消息队列-通过Topic主题模式分发消息
- (九)RabbitMQ消息队列-通过Headers模式分发消息
- 基于Python语言使用RabbitMQ消息队列(六)
- linux中的定时任务及延时任务
- 004 request库的使用
- Mybatis传多个参数的三种解决方式
- 开发板刷系统(X210V3S)
- android 仿微信图片选择器
- RabbitMQ消息队列(六):使用主题进行消息分发
- 解析IP分组
- Ubuntu16.04 install lsd-slam
- 005 爬虫之正则表达式
- [JZOJ5442]【NOIP2017提高A组冲刺11.1】荒诞([BZOJ3060]【POI2012】Tour de Byteotia)
- hdu 6092 Rikka with Subset(逆向01背包+思维)
- HEVC代码学习30:fillMvpCand函数
- 卡尔曼滤波的理解以及推导过程
- 线性表应用_约瑟夫环问题