RabbitMQ是一個在AMQP基礎上完整的,可重複使用的企業訊息系統。
MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。
訊息佇列使用發布訂-閱模式工作。訊息發送者是訊息來源,在對訊息進行處理後將訊息發送至分散式訊息佇列,訊息接受者從分散式訊息佇列取得該訊息後繼續處理。可以看到,訊息發送者和訊息接受者之間沒有直接耦合,訊息發送者將訊息發送至分散式訊息佇列即結束對訊息的處理,而訊息接受者只需要從分散式訊息佇列取得訊息後進行處理,不需要知道該訊息從何而來。
透過訊息佇列通信,讓A,B兩個服務指間保持低耦合,實現業務的靈活拓展。
pika是RabbitMQ團隊所寫的官方Python AMQP函式庫。
$ brew install rabbitmq$ usr/local/sbin/rabbitmq-server
安裝pika
pip install pika
# 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()
# 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中文網其他相關文章!