目标:

  

代码实现(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实现消息过滤接收的更多相关文章

  1. Python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...

  2. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  3. python - 操作RabbitMQ

    python - 操作RabbitMQ     介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...

  4. 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ

    本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...

  5. Python之路第十二天,高级(4)-Python操作rabbitMQ

    rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...

  6. python操作RabbitMQ(不错)

    一.rabbitmq RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列 ...

  7. Python菜鸟之路:Python基础-Python操作RabbitMQ

    RabbitMQ简介 rabbitmq中文翻译的话,主要还是mq字母上:Message Queue,即消息队列的意思.rabbitmq服务类似于mysql.apache服务,只是提供的功能不一样.ra ...

  8. Python操作 RabbitMQ、Redis、Memcache

    Python操作 RabbitMQ.Redis.Memcache Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数 ...

  9. Python操作rabbitmq消息队列持久化

    消息队列持久化 Python操作rabbit消息队列的持久化,如下: # 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)channel.queue_ ...

随机推荐

  1. 【Effective C++】构造/析构/赋值运算

    条款05:了解C++默默编写并调用哪些函数 默认构造函数.拷贝构造函数.拷贝赋值函数.析构函数构成了一个类的脊梁,只有良好的处理这些函数的定义才能保证类的设计良好性. 当我们没有人为的定义上面的几个函 ...

  2. 给第三方apk进行系统签名的几种方式【转】

    本文转载自:http://blog.csdn.net/luzhenrong45/article/details/47733053 版权声明:本文为博主原创文章,未经博主允许不得转载. -------- ...

  3. [转]FPGA入门——basys2开发板的伪随机gold码的生成

    本文原创,转载请注明出处:http://www.cnblogs.com/risten/p/4166169.html 1.系统原理 通过频率控制字选择相位步进,产生访问ROM的地址,进而控制DAC的输出 ...

  4. 基于BASYS2的VHDL程序——数字钟(最终版)

    转载请注明原地址:http://www.cnblogs.com/connorzx/p/3674178.html 调时电路正常工作.一切正常.发现做FPGA还是得从数电的思路思考,设置一个预置使能端,预 ...

  5. TestNG基本注解

    TestNG的注解: 注解 描述 @BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中. @AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后. @Befor ...

  6. Win8风格的WPF按钮

    Win8将Windows的风格又进行了一次变革,我还挺喜欢的,有简洁大气的感觉,华丽绚丽的东西看多了之后总会返璞归真寻找简洁大气的感觉才能心情舒畅. 下面就给个WPF下Button的自定义写法.   ...

  7. Sports

    题目链接 : http://acm.hpu.edu.cn/problem.php?id=1184 或者       http://acm.nyist.net/JudgeOnline/problem.p ...

  8. BZOJ_4010_[HNOI2015]菜肴制作_拓扑排序+贪心

    BZOJ_4010_[HNOI2015]菜肴制作_拓扑排序+贪心 Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜 ...

  9. Azure ARM (22) Azure Policy入门

    <Windows Azure Platform 系列文章目录> 我们知道,在Azure服务层级中,分为以下几个层次: 1.企业合同 2.订阅 3.资源组 4.资源 我们使用的Azure资源 ...

  10. SIP协议&开源SIP服务器搭建和客户端安装

    1. SIP SIP 是一个应用层的控制协议,可以用来建立,修改,和终止多媒体会话,例如Internet电话 SIP在建立和维持终止多媒体会话协议上,支持五个方面: 1)   用户定位: 检查终端用户 ...