Rabbitmq -- direct
2018-06-18 00:22:31来源:未知 阅读 ()
一、前言
RabbitMQ还支持根据关键字发送,即:队列绑定关键字,发送者将数据根据关键字发送到消息exchange。direct类型的Exchange路由规则也很简单,它会把消息路由到那些binding key与routing key完全匹配的Queue中。
二、Exchange direct
direct类型的Exchange路由规则是完全匹配binding key与routing key
生产端:
# -*- coding: UTF-8 -*- import pika # 创建一个连接 connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) # 创建一个管道 channel = connection.channel() # 声明exchange 及类型 channel.exchange_declare(exchange='direct_log', exchange_type='direct') # 输入信息,格式为 info from info test 类似 input_data = input('>>:').strip() # 将输入的信息以空格为分割,转换为列表 data_list = input_data.split(' ') # 三元运算,如果输入信息存在,就使用输入的信息data_list[0],否则用 'info' severity = data_list[0] if len(data_list) > 1 else 'info' message = ' '.join(data_list[2:]) or 'hello,world!' # 这里的routing_key就是 data_list[0] 或 'info' channel.basic_publish(exchange='direct_log', routing_key=severity, body=message) print('[x] Sent %r:%r' % (severity, message)) connection.close()
消费端:
# -*- coding: UTF-8 -*- import pika connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() # 声明exchange 及类型 channel.exchange_declare(exchange='direct_log', exchange_type='direct') result = channel.queue_declare(exclusive=True) queue_name = result.method.queue # 在此我们定义一些列表,列表内容如下 # 这3个列表分别用来测试和routing_key匹配情况 # 第一种只允许接收info的信息 # 第二种允许接收info 和 warning的信息 # 第三种允许接收 info、warning和error的信息 # severities = ['info'] severities = ['info', 'warning'] # severities = ['info', 'warning', 'error'] for severity in severities: channel.queue_bind(exchange='direct_log', queue=queue_name, routing_key=severity) print(' [*] Waiting for logs. To exit press CTRL+C') def callback(ch, method, properties, body): print(" [x] %r:%r" % (method.routing_key, body)) channel.basic_consume(callback, queue=queue_name, no_ack=True) channel.start_consuming()
在目前的情况下,severities = ['info', 'warning'],消费端能接收info 和warning的信息。 但是 error的信息不能收到
生产端输入: info from info test / warning from warning test
同理如果只有 ['info'] 就只能收 info 的信息, 如果全部都包括,则 info、warning和 error的信息都能收到
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python内置装饰器@property 2019-07-24
- 文本备份云仓库-python实用脚本下载 2019-07-24
- python操作日志的封装 2019-05-23
- 面向对象之元类(metaclass) 2019-05-22
- Python操作redis数据库 2019-05-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash