2015年8月7日

RabbitMQ 教學 (2) - Hello RabbitMQ ( Make "Hello RabbitMQ" using Python )

之前介紹了如何安裝 RabbitMQ Server 於 Arch Linux 上。接下來介紹怎麼應用 RabbitMQ,本系列文章將會使用 Python 來與 RabbitMQ 溝通。本篇先從 Hello RabbitMQ 開始吧!( 其他 RabbitMQ 相關教學可以參考本篇整理 )



前置作業
在透過 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


熱門文章