首页 > 其他 > 详细

RabbitMQ之Topics(更加细粒度的接收消息)

时间:2019-10-17 00:40:27      阅读:97      评论:0      收藏:0      [点我收藏+]

组播

  功能更加的强大,通过‘#‘(哈希)绑定键绑定时候,可以接收所有的消息,此时与路由无关,此时就像fanout交换器中一样

  当在绑定中不使用特殊字符‘*‘,‘#‘接收消息的时候,此时就跟direct一样

技术分享图片

 

 topic_send.py

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import pika
 5 import sys
 6 
 7 credentials = pika.PlainCredentials(admin, admin123456)
 8 connection = pika.BlockingConnection(pika.ConnectionParameters(host=192.168.1.6, credentials=credentials))
 9 channel = connection.channel()
10 
11 channel.exchange_declare(exchange=topic_logs, exchange_type=topic)
12 
13 routing_key = sys.argv[1] if len(sys.argv) > 2 else anonymous.info
14 message =  .join(sys.argv[2:]) or Hello World!
15 channel.basic_publish(
16     exchange=topic_logs, routing_key=routing_key, body=message)
17 print(" [x] Sent %r:%r" % (routing_key, message))
18 connection.close()

topic_recevie.py

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import pika
 5 import sys
 6 
 7 credentials = pika.PlainCredentials(admin, admin123456)
 8 connection = pika.BlockingConnection(pika.ConnectionParameters(host=192.168.1.6, credentials=credentials))
 9 channel = connection.channel()
10 
11 channel.exchange_declare(exchange=topic_logs, exchange_type=topic)
12 
13 result = channel.queue_declare(‘‘, exclusive=True)
14 queue_name = result.method.queue
15 
16 binding_keys = sys.argv[1:]
17 if not binding_keys:
18     sys.stderr.write("Usage: %s [binding_key]...\n" % sys.argv[0])
19     sys.exit(1)
20 
21 for binding_key in binding_keys:
22     channel.queue_bind(
23         exchange=topic_logs, queue=queue_name, routing_key=binding_key)
24 
25 print( [*] Waiting for logs. To exit press CTRL+C)
26 
27 
28 def callback(ch, method, properties, body):
29     print(" [x] %r:%r" % (method.routing_key, body))
30 
31 
32 channel.basic_consume(
33     queue=queue_name, on_message_callback=callback, auto_ack=True)
34 
35 channel.start_consuming()

 最终效果就可以达到选择性接收并且还能够更加细粒度的可以接收消息

技术分享图片

RabbitMQ之Topics(更加细粒度的接收消息)

原文:https://www.cnblogs.com/Alexephor/p/11579546.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!