zoukankan      html  css  js  c++  java
  • python操作rabbitmq实现消息过滤接收

    目标:

      

    代码实现(direct_product.py)

     1 # __author__ = 'STEVEN'
     2 import pika,sys
     3 #开启socket
     4 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
     5 #开启一个通道
     6 channel = connection.channel()
     7 #这里不用再创建队列
     8 channel.exchange_declare(exchange='d_logs',exchange_type='direct')
     9 #通过命令行运行本代码,指定要发送的消息级别,如果不指定则为info
    10 severity = sys.argv[1] if len(sys.argv)>1 else 'info'
    11 #通过命令行输入消息级别后的参数
    12 mes = ''.join(sys.argv[2:]) or 'hello world'
    13 #添加了消息级别,即将消息发布到指定了级别的消息队列
    14 channel.basic_publish(exchange='d_logs',routing_key=severity,body=mes)
    15 print('[x] send the mes%s to queue'%mes)
    16 connection.close()
    View Code

    代码实现(direct_consumer.py)

     1 # __author__ = 'STEVEN'
     2 import pika,sys
     3 #建立socket
     4 connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
     5 #开启通道
     6 channel = connection.channel()
     7 #通道先声明exchange类型
     8 channel.exchange_declare(exchange='d_logs',exchange_type='direct')
     9 #声明queue
    10 result = channel.queue_declare(exclusive=True)
    11 #获取queue_name
    12 queue_name = result.method.queue
    13 #从sys中获取消息级别等信息
    14 severitis = sys.argv[1:]
    15 if not severitis:
    16     sys.stderr.write('usage:%s [info] [error] [warning]'%sys.argv[0])
    17     sys.exit(1)
    18 #遍历绑定各个exchange和queue以及消息级别
    19 for severity in severitis:
    20     #绑定queue
    21     channel.queue_bind(exchange='d_logs',routing_key=severity,queue=queue_name)
    22 #回调函数
    23 def callback(ch,method,properties,body):
    24     print('[x] receive mess :%s'%body.decode())
    25 #指定消费相关参数
    26 channel.basic_consume(callback,queue=queue_name,no_ack=True)
    27 print('[*] is waiting for the message')
    28 #开启消费
    29 channel.start_consuming()
    View Code

    运行注意:

      先开启消费端,用命令行指定接受级别

  • 相关阅读:
    xshel链接linuxl安装nginx
    nginx学习笔记
    sweiper做一个tab切换
    bootstrap中tab切换的使用
    pc页面自动缩放到手机端
    日程表
    页面嵌套iframe时,怎样让iframe高度根据自身内容高度自适应
    mysql5.7版本以上下载安装
    电脑快捷键操作汇总
    关于.eslintrc.js代码检测的一些配置
  • 原文地址:https://www.cnblogs.com/g177w/p/8179556.html
Copyright © 2011-2022 走看看