第五章: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消息分发轮询的主要内容,如果未能解决你的问题,请参考以下文章

第五章:Python 之 RabbitMQ 基本示例

第五章

Java使用RabbitMQ之订阅分发(Topic)

Python-RabbitMQ消息分发机制

第五章Python基础之集合与文件操作

RabbitMQ : 订阅者模式之分发模式 ( fanout )