第五章:Python 之 RabbitMQ消息分发轮询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章:Python 之 RabbitMQ消息分发轮询相关的知识,希望对你有一定的参考价值。
#测试目的:RabbitMQ消息分发轮询
#1. 启动两个receive端口,并在callbackup睡眠30秒。
#2. send端口发送数据。
#3. 当第一个receive端收到信息后,立刻第一个程序中止。
#4. 查看第二个receive端是否再收到(正常能收到)
#RabbitMQ 的队列信息,只会在客户端确认收到后才会取消,否则一直存在,
#并且体现了RabbitMQ的分发轮询机制,第一个收了,然后到第二个,或者第一个收不了,第二个收。
#send 端 import pika credentials = pika.PlainCredentials(‘root‘, ‘Password1‘) connection = pika.BlockingConnection(pika.ConnectionParameters(‘10.3.151.86‘,5672,‘/‘,credentials)) channel = connection.channel() #通过connection实例创建一个channel管道 channel.queue_declare(queue=‘hello‘) #在管道中创建一个队列 channel.basic_publish(exchange=‘‘,routing_key=‘hello‘,body=‘Hello Wfffforld!‘) connection.close() #receive 端 import pika import time credentials = pika.PlainCredentials(‘root‘, ‘Password1‘) connection = pika.BlockingConnection(pika.ConnectionParameters(‘10.3.151.86‘,5672,‘/‘,credentials)) channel = connection.channel() channel.queue_declare(queue=‘hello‘) def callback(ch,method,properties,body): #回调函数 time.sleep(30) #增加30秒等待 print(" [x] Received %r" % body) ch.basic_ack(delivery_tag=method.delivery_tag) #通知服务端已确认收到 channel.basic_consume( callback, queue=‘hello‘, # no_ack=True #默认不写是指返回给服务器是否获取数据成功 ) print(‘ [*] Waiting for messages. To exit press CTRL+C‘) channel.start_consuming()
本文出自 “学习旅程” 博客,请务必保留此出处http://mingkang.blog.51cto.com/9678221/1976113
以上是关于第五章:Python 之 RabbitMQ消息分发轮询的主要内容,如果未能解决你的问题,请参考以下文章