码迷,mamicode.com
首页 > 编程语言 > 详细

第五章:Python 之 RabbitMQ消息分发轮询

时间:2017-10-25 23:31:42      阅读:207      评论:0      收藏:0      [点我收藏+]

标签: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消息分发轮询

标签:rabbitmq

原文地址:http://mingkang.blog.51cto.com/9678221/1976113

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!