Python3 通过 pika 连接 RabbitMQ 的基本用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 通过 pika 连接 RabbitMQ 的基本用法相关的知识,希望对你有一定的参考价值。
【RabbitMQ 服务器】
# 在 vhosttest 里面有 exchangetest 和 queuetest 通过 rkeytest 绑定 Broker: 192.168.0.xx virtual host: vhosttest Exchange: exchangetest Queue: queuetest Routing key: rkeytest
【Python 环境】
OS: Windows 10 Python: 3.6.3 x64 pika: 0.11.2
【通过浏览器查看队列状态】
http://192.168.0.xx:15672/api/queues/vhosttest/queuetest
【send.py】
#encoding: utf-8 #author: walker #date: 2018-01-31 #summary: 发送方/生产者 import os, sys, time import pika def Main(): credentials = pika.PlainCredentials("test", "test") parameters = pika.ConnectionParameters(host="192.168.0.xx", virtual_host='vhosttest', credentials=credentials) connection = pika.BlockingConnection(parameters) # 连接 RabbitMQ channel = connection.channel() # 创建频道 queue = channel.queue_declare(queue='queuetest') # 声明或创建队列 while True: # 循环向队列中发送信息 message = time.strftime('%H:%M:%S', time.localtime()) channel.basic_publish(exchange='exchangetest', routing_key='rkeytest', body=message) print('send message: %s' % message) while True: # 检查队列,以重新得到消息计数 queue = channel.queue_declare(queue='queuetest', passive=True) messageCount = queue.method.message_count print('messageCount: %d' % messageCount) if messageCount < 100: break time.sleep(1) # 关闭连接 connection.close() if __name__ == '__main__': Main()
【recv.py】
#encoding: utf-8 #author: walker #date: 2018-01-31 #summary: 接收方/消费者 import os, sys, time import pika # 接收处理消息的回调函数 def ConsumerCallback (channel, method, properties, body): print("Received %s" % body) def Main(): credentials = pika.PlainCredentials("test", "test") parameters = pika.ConnectionParameters(host="192.168.0.xx", virtual_host='vhosttest', credentials=credentials) connection = pika.BlockingConnection(parameters) # 连接 RabbitMQ channel = connection.channel() # 创建频道 queue = channel.queue_declare(queue='queuetest') # 声明或创建队列 # no_ack=True 开启自动确认,不然消费后的消息会一直留在队列里面 # no_ack = no_manual_ack = auto_ack;不手动应答,开启自动应答模式 channel.basic_consume(ConsumerCallback, queue='queuetest', no_ack=True) print('Wait Message ...') channel.start_consuming() if __name__ == '__main__': Main()
【相关阅读】
*** walker ***
以上是关于Python3 通过 pika 连接 RabbitMQ 的基本用法的主要内容,如果未能解决你的问题,请参考以下文章
Pika 连接丢失错误:pika.exceptions.StreamLostError:流连接丢失:ConnectionResetError(104,'对等连接重置')
通过 http 方式获取 RabbitMQ 队列消息数量(python3)