Python中如何使用RabbitMQ

producer生产者

Python代码实现

import pika
# 指定远程rabbitmq的用户名密码
username = 'admin'  
pwd = '123123'
user_pwd = pika.PlainCredentials(username, pwd)
# 创建连接
s_conn = pika.BlockingConnection(pika.ConnectionParameters('120.27.221.81', credentials=user_pwd))  
# 在连接上创建一个频道
chan = s_conn.channel()  
# 声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
chan.queue_declare(queue='hello')  
chan.basic_publish(exchange='',  # 交换机
                   routing_key='hello',  # 路由键,写明将消息发往哪个队列,本例是将消息发往队列hello
                   body='hello Arvin')  # 生产者要发送的消息

print('[生产者] hello Arvin.')
# 当生产者发送完消息后,可选择关闭连接
s_conn.close()  



执行代码:
python ./RabbitMQ/send.py

打印消息:
[生产者] hello Arvin.

Ubuntu服务器查看消息

$ rabbitmqctl list_queues
Listing queues ...
hello	1

consumer消费者

代码实现

import pika

# 指定远程rabbitmq的用户名密码
username = 'admin'
pwd = '123123'
user_pwd = pika.PlainCredentials(username, pwd)
# 创建连接
s_conn = pika.BlockingConnection(pika.ConnectionParameters('192.168.1.240', credentials=user_pwd))
# 在连接上创建一个频道
chan = s_conn.channel()
# 声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
chan.queue_declare(queue='hello')


# 定义一个回调函数,用来接收生产者发送的消息
def callback(ch, method, properties, body):
    print("[消费者] recv %s" % body)


chan.basic_consume(callback,  # 调用回调函数,从队列里取消息
                   queue='hello',  # 指定取消息的队列名
                   no_ack=True)  # 取完一条消息后,不给生产者发送确认消息,默认是False的,即  默认给rabbitmq发送一个收到消息的确认,一般默认即可
print('[消费者] waiting for msg .')
# 开始循环取消息
chan.start_consuming()



执行代码:
python ./RabbitMQ/receive.py

打印消息:
[消费者] waiting for msg .
[消费者] recv b'hello Arvin'
[消费者] recv b'hello Ane'

Ubuntu服务器查看消息

$ rabbitmqctl list_queues
Listing queues ...
hello	0

posted @ 2017-07-09 22:35  _Arvin  Views(298)  Comments(0Edit  收藏  举报