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
直接參考官方文檔便可寫的很是詳細