目标:

  

代码实现(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. 20170313 ABAP以jason 格式返回值到http(接口内容返回)

     问题1: 返回jason 格式信息给你们这步不通, 这个可以怎么处理, ***得到SCP 系统开发回复,他们需要调整方法: (1)调用函数做RETURN, IT_ZSMLSCPNOTICE-FUNC ...

  2. appium(7)-Automating mobile gestures

    While the Selenium WebDriver spec has support for certain kinds of mobile interaction, its parameter ...

  3. Appium——连接真机,adb devices获取不到设备号

    连接真机后,使用 adb devices获取不到设备号. 1.检查usb接口是否正常,是否正常链接到电脑 2.手机开发者模式是否开启,usb调试是否开启 3.检查驱动是否正常 4.如果驱动显示黄叹号, ...

  4. python:将字典转化为数据框

    my_dict = {,,} import pandas as pd pd.Series(my_dict) fuck i you dtype: int64 一个key只有一个value的字典如果直接转 ...

  5. RAutomation 在 Watir中的使用

    RAutomation的用法 require "rautomation" # 通过匹配部分标题来获取窗口 window = RAutomation::Window.new(:tit ...

  6. C++之面向对象初探----对象管理模型(关键是this指针)

    前言 c++对象模型可以概括为以下2部分 1.语言中直接支持面向对象程序员设计部分,主要涉及如构造函数.析构函数.虚函数.继承(单继承.多继承.虚继承).多态等待. 2.对于各种支持的底层实现机制 在 ...

  7. Winform中ComBox大小设置

    combox,listview等一些控件的外观会由于字体大小的改变而改变.修改字体的大小宽度自动变化

  8. .NETFramework:StaticValueInjecter

    ylbtech-.NETFramework:StaticValueInjecter 1.程序集 Omu.ValueInjecter, Version=3.1.1.0, Culture=neutral, ...

  9. js 拦截 窗体关闭事件

    <script type="text/javascript">   <!--         window.onbeforeunload = onbeforeun ...

  10. Python的中文处理

    一.使用中文字符 在python源码中如果使用了中文字符,运行时会有错误,解决的办法是在源码的开头部分加入字符编码的声明,下面是一个例子: #!/usr/bin/env python # -*- co ...