国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python通過RabbitMQ服務器實現交換機功能的實例教程

2019-11-25 16:41:01
字體:
來源:轉載
供稿:網友

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

sudo apt-get install rabbitmq-server

Python使用RabbitMQ需要Pika庫:

sudo pip install pika

好了,接下來我們先看交換機的工作原理:消息發送端先將消息發送給交換機,交換機再將消息發送到綁定的消息隊列,而后每個接收端都能從各自的消息隊列里接收到信息。

2016629180703866.png (608×187)

下面用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命令來查看交換機信息:

2016629180811911.png (265×208)

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

2016629180917024.png (318×82)

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

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都會接收到消息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西青区| 余姚市| 南陵县| 沙雅县| 旅游| 田东县| 昌宁县| 绿春县| 德清县| 宝鸡市| 黄大仙区| 南川市| 洞口县| 呼伦贝尔市| 韶山市| 崇仁县| 常德市| 合肥市| 稷山县| 松阳县| 科尔| 清涧县| 繁峙县| 罗甸县| 垦利县| 环江| 阿合奇县| 五家渠市| 平湖市| 承德县| 青龙| 茂名市| 蒙阴县| 曲阜市| 甘洛县| 梅州市| 桐梓县| 宣城市| 普格县| 毕节市| 辉县市|