Python通過RabbitMQ伺服器實現交換器功能的執行個體教程,pythonrabbitmq

來源:互聯網
上載者:User

Python通過RabbitMQ伺服器實現交換器功能的執行個體教程,pythonrabbitmq

快速回顧一下RabbitMQ伺服器的安裝:

sudo apt-get install rabbitmq-server

Python使用RabbitMQ需要Pika庫:

sudo pip install pika

好了,接下來我們先看交換器的工作原理:訊息發送端先將訊息發送給交換器,交換器再將訊息發送到綁定的訊息佇列,而後每個接收端都能從各自的訊息佇列裡接收到資訊。

下面用send.py和receive.py來類比實現交換器的功能。send.py表示發送端,receive.py表示接收端。

receive.py:

#!/usr/bin/env python#coding=utf8import pika connection = pika.BlockingConnection(pika.ConnectionParameters(        'localhost'))channel = connection.channel() #定義交換器channel.exchange_declare(exchange='messages', type='fanout') #隨機產生隊列,並綁定到交換器上result = channel.queue_declare(exclusive=True)queue_name = result.method.queuechannel.queue_bind(exchange='messages', queue=queue_name) def callback(ch, method, properties, body):  print " [x] Received %r" % (body,) channel.basic_consume(callback, queue=queue_name, no_ack=True) print ' [*] Waiting for messages. To exit press CTRL+C'channel.start_consuming()

上例代碼中,queue_declare的參數exclusive=True表示當接收端退出時,銷毀臨時產生的隊列,這樣就不會佔用資源。運行這個程式,然後使用rabbitmqctl list_exchanges命令來查看交換器資訊:

其中紅色框就是上例定義的交換器了。再使用rabbitmqctl list_queues查看下訊息佇列情況:

其中紅色框就是隨機產生的訊息佇列了。

send.py:

#!/usr/bin/env python#coding=utf8import pika connection = pika.BlockingConnection(pika.ConnectionParameters(        'localhost'))channel = connection.channel() #定義交換器channel.exchange_declare(exchange='messages', type='fanout') #將訊息發送到交換器channel.basic_publish(exchange='messages', routing_key='', body='Hello World!')print " [x] Sent 'Hello World!'"connection.close()

上例代碼中, basic_publish方法的參數exchange被設定為相應交換器,因為是要廣播出去,發送到所有隊列,所以routing_key就不需要設定了。

exchange如果為空白,表示是使用匿名的交換器,在上面交換器資訊的圖片中可以看到有amq.*這樣的交換器,就是系統預設的交換器了。routing_key在使用匿名交換器的時候才需要指定,表示發送到哪個隊列的意思。第一篇的例子示範了這個功能。

開啟另外一個終端,執行send.py,可以觀察到receive.py接收到了訊息。如果有多個終端執行receive.py,那麼每個receive.py都會接收到訊息。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.