RabbitMQ消息隊列

RabbitMQ消息隊列html

一.MQ介紹

全稱爲Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通訊方法。MQ是消費-生產者模型的一個典型的表明,一端往消息隊列中不斷寫入消息,而另外一端則能夠讀取隊列中的消息。消息發佈者只管把消息發佈到 MQ 中而不用管誰來取,消息使用者只管從 MQ 中取消息而無論是誰發佈的。這樣發佈者和使用者都不用知道對方的存在。python

你能夠想一想在生活中的一種場景:當你把信件的投進郵筒,郵遞員確定最終會將信件送給收件人。咱們能夠把MQ比做 郵局和郵遞員。服務器

MQ和郵局的主要區別是,它不處理消息,可是,它會接受數據、存儲消息數據、轉發消息函數

  • 儲存消息、數據
  • 保證消息的順序
  • 保證數據的正確交付

二.RabbitMQ的構成

  • Publisher(生產者)

一個向交換器發佈消息的客戶端應用程序。代理

  • Exchange(交換器)

用來接收生產者發送的消息並將這些消息路由給服務器中的隊列。code

  • Queue(消息隊列)

存儲消息的一個隊列htm

  • Channel(信道)

多路複用鏈接中的一條獨立的雙向數據流通道rabbitmq

  • Consumer(消費者)

表示一個從消息隊列中取得消息的客戶端應用程序隊列

三.RabbitMQ的使用

官方文檔: https://www.rabbitmq.com/install-standalone-mac.htmlip

下載RabbitMQ

1.安裝模塊

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

直接參考官方文檔便可寫的很是詳細

相關文章
相關標籤/搜索