首頁 >後端開發 >Python教學 >Python中RabbitMQ的操作圖文程式碼詳解

Python中RabbitMQ的操作圖文程式碼詳解

黄舟
黄舟原創
2017-05-07 10:47:011473瀏覽


知識準備

RabbitMQ

RabbitMQ是一個在AMQP基礎上完整的,可重複使用的企業訊息系統。

MQ

MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。
Python中RabbitMQ的操作圖文程式碼詳解
訊息佇列使用發布訂-閱模式工作。訊息發送者是訊息來源,在對訊息進行處理後將訊息發送至分散式訊息佇列,訊息接受者從分散式訊息佇列取得該訊息後繼續處理。可以看到,訊息發送者和訊息接受者之間沒有直接耦合,訊息發送者將訊息發送至分散式訊息佇列即結束對訊息的處理,而訊息接受者只需要從分散式訊息佇列取得訊息後進行處理,不需要知道該訊息從何而來。
透過訊息佇列通信,讓A,B兩個服務指間保持低耦合,實現業務的靈活拓展。

pika

pika是RabbitMQ團隊所寫的官方Python AMQP函式庫。

安裝啟動

$ brew install rabbitmq$ usr/local/sbin/rabbitmq-server

安裝pika

pip install pika

操作實例

Hello World

sender

# coding: utf-8import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello, World!')print 'send msg: Hello World!'connection.close()

#receiver

# coding: utf-8import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')def callback(ch, method, properties, body):
    print 'receive msg: %s' % body

channel.basic_consume(callback,
                      queue='hello',
                      no_ack=False)print 'waiting for msg...'channel.start_consuming()

運行結果:

# sender.py 运行2次send msg: Hello World!# receiverwaiting for msg...
receive msg: Hello, World!
receive msg: Hello, World!

消費者處理訊息後,並沒有退出,仍然可以處理後續的訊息。

以上是Python中RabbitMQ的操作圖文程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn