RabbitMQ 详解

RabbitMQ 是一种服务器
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。
应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来连接它们。
简单来说 RabbitMQ 是封装了 AMQP 协议(或者其他)的一个库,通过队列,交换,以及回调函数等来实现信息的交换。

生产者代码

#RabbitMQ使用AMQP 0.9.1,这是一种开放的,通用的消息传递协议
#Pika是AMQP 0-9-1协议的纯Python实现,试图保持与底层网络支持库相当独立
import pika
#建立安装RabbitMQ 的服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
#创建一个将要传递消息的hello队列
channel.queue_declare(queue = 'hello'#消息永远不能直接发送到队列,它总是需要通过交换,routing_key参数中指定队列名称
channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print(" [x] Sent 'Hello World!'")
#关闭发送连接
connection.close()

消费者代码

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)

#每当我们收到消息时,Pika库都会调用此回调函数callback。
#告诉RabbitMQ这个特定的回调函数应该从我们的hello队列接收消息
channel.basic_consume(callback,
                      queue='hello',
                      no_ack=True)
#在我们的例子中,此功能将在屏幕上显示消息的内容
print(' [*] Waiting for messages. To exit press CTRL+C')
#进入一个永不停止的循环,等待数据并在必要时运行回调。
channel.start_consuming()

首先运行消费着,进行等待,然后运行生产者进行消息发送

#首先运行消费者,等待消息
python consumer.py
#然后运行生产者
python producer.py

 

posted @ 2018-08-06 11:31  十七楼的羊  阅读(166)  评论(0编辑  收藏  举报