MQ全稱爲Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。
現在介紹一下基本的RabbitMQ的通信過程:
RabbitMQ基本的通信模型是這樣的,它類似於C-S通信模型,它包含一個producer (生產者),queue(消息隊列)和一個consumer(消費者),生產者發送的消息只會存儲在中間的消息隊列中:
下面是使用ubu環境,使用python實現簡易的消息通信,需要安裝rabbitmq-server和pika(使用的第三方控件):
1.RabbitMQ的安裝直接使用apt-get install rabbitmq-server;
2.pika可以使用pip install pika,我這樣沒有安裝成功,我是下載pika的源碼包進行安裝的,地址是:https://pypi.python.org/pypi/pika/#downloads,解壓後使用python setup.py install 安裝即可
下面是一個簡易的消息通信的代碼:
client.py
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) #創建一個連接
channel = connection.channel() #創建通道
channel.queue_declare(queue='hello') #把消息隊列的名字爲hello
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!') #設置routing_key(消息隊列的名稱)和body(發送的內容)
print(" [x] Sent 'Hello World!'")
connection.close() #關閉連接
server.py
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) #創建一個連接
channel = connection.channel() #建立通道
channel.queue_declare(queue='hello') 把消費者和queue綁定起來,生產者和queue的也是hello
def callback(ch, method, properties, body): #回調函數get消息體
print(" [x] Received %r" % body)
channel.basic_consume(callback,
queue='hello',
no_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming() #創建死循環,監聽消息隊列,可使用CTRL+C結束監聽
最後執行python srver.py 啓動服務端監聽消息隊列,執行python client.py啓動客戶端向消息隊列發送消息
更多內容請查詢RabbitMQ官網:http://www.rabbitmq.com/