RabbitMQ消息队列html
全称为Message Queue
, 消息队列(MQ
)是一种应用程序对应用程序的通讯方法。MQ
是消费-生产者模型的一个典型的表明,一端往消息队列中不断写入消息,而另外一端则能够读取队列中的消息。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而无论是谁发布的。这样发布者和使用者都不用知道对方的存在。python
你能够想一想在生活中的一种场景:当你把信件的投进邮筒,邮递员确定最终会将信件送给收件人。咱们能够把MQ比做 邮局和邮递员。服务器
MQ和邮局的主要区别是,它不处理消息,可是,它会接受数据、存储消息数据、转发消息函数
一个向交换器发布消息的客户端应用程序。
代理
用来接收生产者发送的消息并将这些消息路由给服务器中的队列。
code
存储消息的一个队列
htm
多路复用链接中的一条独立的双向数据流通道
rabbitmq
表示一个从消息队列中取得消息的客户端应用程序
队列
官方文档: https://www.rabbitmq.com/install-standalone-mac.htmlip
下载RabbitMQ
pip3 install pika or easy_install pika or 源码 pip3 install https://pypi.python.org/pypi/pika
import pika # 向哪一个地址进行链接 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 咱们链接到本地计算机上的代理,即 localhost。若是咱们想链接到另外一台计算机上的代理,则只需在此处指定其名称或IP地址。 # 在发送以前,咱们须要确保收件人队列存在。若是咱们将消息发送到不存在的位置,RabbitMQ只会删除该消息 # 建一个将消息传递到的问候队列 channel.queue_declare(queue = 'hello') # 队列名称须要在routing_key参数中指定 channel.basic_publish(exchange = '', routing_key = 'hello', body = 'Hello World!') print('已发送') # 关闭 connection.close()
import pika # 链接 connection = pika.BlockingConnection(pika.ConnectionParameters(host="localhost")) channel = connection.channel() # 接收人 channel.queue_declare(queue = 'hello') # 定义回调函数 def callback(ch, method, properties, body): # ch,方法,属性,消息 print("consume done", ch, method, properties, body) channel.basic_consume(on_message_callback=callback, queue="hello", auto_ack=True) # 咱们进入一个永无止境的循环,该循环等待数据并在必要时运行回调。 channel.start_consuming()
https://www.rabbitmq.com/getstarted.html
直接参考官方文档便可写的很是详细