python操作rabbitmq实现消息过滤接收
目标:

代码实现(direct_product.py)
# __author__ = 'STEVEN'
import pika,sys
#开启socket
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
#开启一个通道
channel = connection.channel()
#这里不用再创建队列
channel.exchange_declare(exchange='d_logs',exchange_type='direct')
#通过命令行运行本代码,指定要发送的消息级别,如果不指定则为info
severity = sys.argv[1] if len(sys.argv)>1 else 'info'
#通过命令行输入消息级别后的参数
mes = ''.join(sys.argv[2:]) or 'hello world'
#添加了消息级别,即将消息发布到指定了级别的消息队列
channel.basic_publish(exchange='d_logs',routing_key=severity,body=mes)
print('[x] send the mes%s to queue'%mes)
connection.close()
代码实现(direct_consumer.py)
# __author__ = 'STEVEN'
import pika,sys
#建立socket
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
#开启通道
channel = connection.channel()
#通道先声明exchange类型
channel.exchange_declare(exchange='d_logs',exchange_type='direct')
#声明queue
result = channel.queue_declare(exclusive=True)
#获取queue_name
queue_name = result.method.queue
#从sys中获取消息级别等信息
severitis = sys.argv[1:]
if not severitis:
sys.stderr.write('usage:%s [info] [error] [warning]'%sys.argv[0])
sys.exit(1)
#遍历绑定各个exchange和queue以及消息级别
for severity in severitis:
#绑定queue
channel.queue_bind(exchange='d_logs',routing_key=severity,queue=queue_name)
#回调函数
def callback(ch,method,properties,body):
print('[x] receive mess :%s'%body.decode())
#指定消费相关参数
channel.basic_consume(callback,queue=queue_name,no_ack=True)
print('[*] is waiting for the message')
#开启消费
channel.start_consuming()
运行注意:
先开启消费端,用命令行指定接受级别
python操作rabbitmq实现消息过滤接收的更多相关文章
- Python操作RabbitMQ
RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- python - 操作RabbitMQ
python - 操作RabbitMQ 介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...
- 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ
本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...
- Python之路第十二天,高级(4)-Python操作rabbitMQ
rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...
- python操作RabbitMQ(不错)
一.rabbitmq RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列 ...
- Python菜鸟之路:Python基础-Python操作RabbitMQ
RabbitMQ简介 rabbitmq中文翻译的话,主要还是mq字母上:Message Queue,即消息队列的意思.rabbitmq服务类似于mysql.apache服务,只是提供的功能不一样.ra ...
- Python操作 RabbitMQ、Redis、Memcache
Python操作 RabbitMQ.Redis.Memcache Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数 ...
- Python操作rabbitmq消息队列持久化
消息队列持久化 Python操作rabbit消息队列的持久化,如下: # 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)channel.queue_ ...
随机推荐
- HTML5 Canvas 自定义笔刷
1. [图片] QQ截图20120715095110.png 2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" & ...
- php数组合并
php的数合并函数: array_merge($arr1, $arr2, ..., $arr{$n}); 如果数组的键名有重复,后面的会覆盖前面的. 如果键名是数字索引,则会重新排列索引,往后累加. ...
- Java丨时间判断谁前谁后
直奔主题: String date_str1 = "2016-06-02 23:03:123"; String date_str2 = "2016-06-03 03:03 ...
- centos服务器安装配置Postgre9.6
安装: STEP1:下载对应rpm yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64 ...
- testing
doctest_test.py def square(x): ''' 这里需要空格 >>> square(2) 4 啦啦 >>> square(3) 9 上不一行能 ...
- Json 不同语言的使用
Javascript: 1.使用eval var parse_json_by_eval = function(str){ return eval('('+str+')'); } var value = ...
- DAG上的DP
引例:NYOJ16 矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可 ...
- HDU2896(AC自动机入门题)
病毒侵袭 Time Limit:1000MS Memory Limit:32768KB Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这 ...
- 八、子查询、limit及limit的分页
1.子查询 定义:select语句中嵌套select语句被称为子查询 select子句可能出现在select.from.where关键字后面,如下: A.将一个表的查询结果当做是过滤条件 B.将一个表 ...
- debugs
import os def get_nova_credentials_v2(): d = {} d['version'] = '2.0' d['username'] = os.environ['OS_ ...