前置作業
在透過 Python 編寫 RabbitMQ 相關應用,我們可以使用 AMQP 的 library,而我選擇的是 pika,透過 pip 安裝的指令如下:
# 預設 Python 版本
pip install pika
# Python2.7 版本
pip2.7 install pika
發送與接收訊息
首先我們先來編寫傳送訊息的發送端 ( 或稱 Producer ),send.py:
# -*- coding: utf-8 -*-
import pika
# 建立連線,localhost 可設定為特定的 IP 位址
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
# 宣告你所使用的 Queue
channel.queue_declare(queue='myRabbitMQ')
# 發送訊息
channel.basic_publish(exchange='', routing_key='myRabbitMQ', body='Hello RabbitMQ!')
print " [x] Sent 'Hello RabbitMQ!'"
# 關閉連線
connection.close()
接著來建立接收訊息的接收端 ( 或稱 Consumer ),receive.py:
# -*- coding: utf-8 -*-
import pika
# 建立連線,localhost 可設定為特定的 IP 位址
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
# 宣告你所使用的 Queue
channel.queue_declare(queue='myRabbitMQ')
print ' [*] Waiting for messages. To exit press CTRL+C'
# 建立收到訊息後的動作
def callback(ch, method, properties, body):
print (" [x] Received %r" % (body,))
# 設定接收端相關參數
channel.basic_consume(callback, queue='myRabbitMQ', no_ack=True)
# 執行持續接收訊息
channel.start_consuming()
測試 send.py 與 receive.py
首先執行 receive.py,你可以看到沒有任何訊息顯示而且程式也不會停止,接著多次執行 send.py 就可以看到接收端那邊開始顯示你丟入的訊息,結果應該如同下面:
[*] Waiting for messages. To exit press CTRL+C
[x] Received 'Hello RabbitMQ!'
[x] Received 'Hello RabbitMQ!'
Environment :
・ Arch Linux
・ Python 2.7
Reference :
・ RabbitMQ official site
・ Pika docs