Python下使用pika簡單實現RabbitMQ通信

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章