最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python通過RabbitMQ服務(wù)器實(shí)現(xiàn)交換機(jī)功能的實(shí)例教程

 更新時間:2016年06月29日 18:15:26   作者:陳杰斌  
RabbitMQ是一個基于消息隊(duì)列的服務(wù)器程序,Python可以通過Pika庫來驅(qū)動它,這里我們將來看一個Python通過RabbitMQ服務(wù)器實(shí)現(xiàn)交換機(jī)功能的實(shí)例教程:

快速回顧一下RabbitMQ服務(wù)器的安裝:

sudo apt-get install rabbitmq-server

Python使用RabbitMQ需要Pika庫:

sudo pip install pika

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

2016629180703866.png (608×187)

下面用send.py和receive.py來模擬實(shí)現(xiàn)交換機(jī)的功能。send.py表示發(fā)送端,receive.py表示接收端。

receive.py:

#!/usr/bin/env python
#coding=utf8
import pika
 
connection = pika.BlockingConnection(pika.ConnectionParameters(
        'localhost'))
channel = connection.channel()
 
#定義交換機(jī)
channel.exchange_declare(exchange='messages', type='fanout')
 
#隨機(jī)生成隊(duì)列,并綁定到交換機(jī)上
result = channel.queue_declare(exclusive=True)
queue_name = result.method.queue
channel.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的參數(shù)exclusive=True表示當(dāng)接收端退出時,銷毀臨時產(chǎn)生的隊(duì)列,這樣就不會占用資源。運(yùn)行這個程序,然后使用rabbitmqctl list_exchanges命令來查看交換機(jī)信息:

2016629180811911.png (265×208)

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

2016629180917024.png (318×82)

其中紅色框就是隨機(jī)產(chǎn)生的消息隊(duì)列了。

send.py:

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

上例代碼中, basic_publish方法的參數(shù)exchange被設(shè)定為相應(yīng)交換機(jī),因?yàn)槭且獜V播出去,發(fā)送到所有隊(duì)列,所以routing_key就不需要設(shè)定了。

exchange如果為空,表示是使用匿名的交換機(jī),在上面交換機(jī)信息的圖片中可以看到有amq.*這樣的交換機(jī),就是系統(tǒng)默認(rèn)的交換機(jī)了。routing_key在使用匿名交換機(jī)的時候才需要指定,表示發(fā)送到哪個隊(duì)列的意思。第一篇的例子演示了這個功能。

打開另外一個終端,執(zhí)行send.py,可以觀察到receive.py接收到了消息。如果有多個終端執(zhí)行receive.py,那么每個receive.py都會接收到消息。

相關(guān)文章

  • PyTorch之前向傳播函數(shù)forward用法解讀

    PyTorch之前向傳播函數(shù)forward用法解讀

    這篇文章主要介紹了PyTorch之前向傳播函數(shù)forward用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python xmind 包使用詳解(其中解決導(dǎo)出的xmind文件 xmind8可以打開 xmind2020及之后版本打開報(bào)錯問題)

    python xmind 包使用詳解(其中解決導(dǎo)出的xmind文件 xmind8可以打開 xmind2020及之后版本打

    xmind8 可以打開xmind2020 報(bào)錯,如何解決這個問題呢?下面小編給大家?guī)砹藀ython xmind 包使用(其中解決導(dǎo)出的xmind文件 xmind8可以打開 xmind2020及之后版本打開報(bào)錯問題),感興趣的朋友一起看看吧
    2021-10-10
  • Python中最強(qiáng)大的重試庫Tenacity使用探索

    Python中最強(qiáng)大的重試庫Tenacity使用探索

    這篇文章主要為大家介紹了Python中最強(qiáng)大的重試庫Tenacity使用探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • python尋找list中最大值、最小值并返回其所在位置的方法

    python尋找list中最大值、最小值并返回其所在位置的方法

    今天小編就為大家分享一篇python尋找list中最大值、最小值并返回其所在位置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 最新評論

    自治县| 长海县| 蒙山县| 青川县| 瑞丽市| 永顺县| 改则县| 南召县| 疏附县| 浦东新区| 吕梁市| 汝州市| 宝坻区| 驻马店市| 和田市| 平泉县| 汾阳市| 五峰| 开鲁县| 勃利县| 东明县| 韶关市| 社旗县| 封丘县| 阿克苏市| 石台县| 永泰县| 紫云| 都兰县| 自贡市| 锦州市| 磴口县| 堆龙德庆县| 出国| 庄浪县| 岚皋县| 甘谷县| 安乡县| 珠海市| 明星| 松滋市|