RabbitMQ(part4某消费者只接收符合某种绑定秘钥和路由秘钥的消息)----Routing

来源:互联网 发布:哪个国家mac口红最便宜 编辑:程序博客网 时间:2024/06/08 14:09

1、代码如下:

emit_logs_direct.py:

import pikaimport sysconnection=pika.BlockingConnection(pika.ConnectionParameters(host='localhost'));channel=connection.channel();channel.exchange_declare(exchange='direct_logs',exchange_type='direct');severity=sys.argv[1] if len(sys.argv)>2 else 'info';message=' '.join(sys.argv[2:])or 'Hello World';channel.basic_publish(exchange='direct_logs',routing_key=severity,body=message);print("[x] Sent %r:%r"%(severity,message));connection.close();

receive_logs_direct.py:

import pikaimport sysconnection=pika.BlockingConnection(pika.ConnectionParameters(host='localhost'));channel=connection.channel();channel.exchange_declare(exchange='direct_logs',exchange_type='direct');result=channel.queue_declare(exclusive=True);queue_name=result.method.queue;severities = sys.argv[1:]if not severities:    sys.stderr.write("Usage: %s [info] [warning] [error]\n" % sys.argv[0])    sys.exit(1)for severity in severities:    channel.queue_bind(exchange='direct_logs',                       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()


原创粉丝点击