摘要:可以簡(jiǎn)單方便的通過配置,并可以向和中發(fā)消息來驗(yàn)證自己的理解。然后通過發(fā)送消息,可以隨便填寫,因?yàn)槭穷愋偷模黄鹱饔谩_@種情況下,隊(duì)列之間是互斥關(guān)系,一個(gè)消息最多只能進(jìn)入一個(gè)隊(duì)列。
現(xiàn)在很多開源軟件都提供了對(duì)應(yīng)的web管理界面,rabbitmq也不例外,rabbitmq提供了一個(gè)web插件。當(dāng)rabbit-server啟動(dòng)之后,即在瀏覽器中通過http://localhost:15672/地址訪問頁面,提供一個(gè)比命令rabbitmqctl更友好的學(xué)習(xí)rabbitmq的方式。可以簡(jiǎn)單方便的通過配置rabbitmq,并可以向exchange和queue中發(fā)消息來驗(yàn)證自己的理解。如下圖:
Rabbitmq 常用三種exchange類型: Fanout exchange:這是處理邏輯最簡(jiǎn)單的exchange類型,實(shí)際上它沒有任何邏輯,它把進(jìn)入該exchange的消息全部轉(zhuǎn)發(fā)給每一個(gè)綁定的隊(duì)列中,如果這個(gè)exchange沒有隊(duì)列與之綁定,消息會(huì)被丟棄。
測(cè)試:
新建一個(gè)fanout類型的exchange,名稱叫fanoutTest,并綁定兩個(gè)routing key是hello.world的隊(duì)列,如下圖所示。
然后通過exchange發(fā)送消息,routing key可以隨便填寫,因?yàn)槭莊anout類型的exchange,routing key不起作用。點(diǎn)擊publish按鈕,即可發(fā)送消息。
兩個(gè)消息隊(duì)列都接收到了對(duì)應(yīng)的消息,如下圖所示,(消費(fèi)隊(duì)列的時(shí)候有個(gè)Requeue的選項(xiàng),如果是“Yes”,消息會(huì)再入隊(duì),如果是“NO”,則消息被消費(fèi)之后隊(duì)列中就不會(huì)存在這個(gè)消息了)
Direct exchange這種類型的交換機(jī)Fancout 類型的交換機(jī)智能一些,它會(huì)根據(jù)routing key來決定把消息具體扔到哪個(gè)消息隊(duì)列中。通過exchange發(fā)消息的時(shí)候會(huì)指定一個(gè)routing key,只有當(dāng)routing key和與隊(duì)列綁定的routing key一樣的時(shí)候,消息才對(duì)發(fā)送到對(duì)應(yīng)的消息隊(duì)列。即,如果與某個(gè)隊(duì)列綁定的routing key叫hello.world,則通過exchange發(fā)送的routing key必須也是hello.world,該隊(duì)列才能接收到消息(可按上述步驟進(jìn)行驗(yàn)證)。這種情況下,隊(duì)列之間是互斥關(guān)系,一個(gè)消息最多只能進(jìn)入一個(gè)隊(duì)列。
Topic exchangeTopic exchange是最靈活的exchange,它會(huì)把exchange的routing key與綁定隊(duì)列的routing key進(jìn)行模式匹配。Routing key中可以包含 和#兩種符號(hào),#號(hào)可以用來匹配一個(gè)或者多個(gè)單詞,用來匹配正好一個(gè)單詞。官方的下圖很好地說明了這個(gè)問題,讀者最好自己動(dòng)手驗(yàn)證一下。
Python腳本操作Rabbitmqpython有多個(gè)可以接入rabbitmq的庫(kù),pika是官方推薦的一個(gè)。我在公司批量創(chuàng)建消息隊(duì)列的需求,于是寫了一個(gè)python批量創(chuàng)建消息隊(duì)列的腳本。
首先安裝pika:
sudo pip install pika==0.10.0
請(qǐng)輸入代碼 __author__ =?"tianbing" ? import?os import?sys import?pika ? ? def createVerifyCardQueues(): ????credentials = pika.PlainCredentials("your user",?"your password") ????connection = pika.BlockingConnection(pika.ConnectionParameters("127.0.0.1",5672,"/",credentials)) ????channel = connection.channel() ? ????name_prefix =?"merchant.verifycard.async" ????exchange_name =?"paybiz.merchant.exchange" ????channel.queue_declare() ????start=10 ????end =?26 ????for?biz_type in range(start, end): ????????queue_name = name_prefix + str(biz_type) ????????channel.queue_declare(queue_name,False,True) ????????channel.queue_bind(queue_name,exchange_name,queue_name) ? if?__name__ ==?"__main__": ????createVerifyCardQueues()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/37627.html
摘要:交易所在本教程的前幾部分中,我們發(fā)送消息并從隊(duì)列中接收消息。消費(fèi)者是接收消息的用戶的應(yīng)用程序。中的消息傳遞模型的核心思想是生產(chǎn)者永遠(yuǎn)不會(huì)將任何消息直接發(fā)送到隊(duì)列中。交換和隊(duì)列之間的關(guān)系稱為綁定。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 發(fā)布 / 訂閱 (using the Pika Python client) 本章節(jié)教程重點(diǎn)介紹的...
摘要:為了預(yù)防消息丟失,提供了,即工作進(jìn)程在收到消息并處理后,發(fā)送給,告知這時(shí)候可以把該消息從隊(duì)列中刪除了。如果工作進(jìn)程掛掉了,沒有收到,那么會(huì)把該消息重新分發(fā)給其他工作進(jìn)程。之前在發(fā)布消息時(shí),的值為即使用。 HelloWorld 簡(jiǎn)介 RabbitMQ:接受消息再傳遞消息,可以視為一個(gè)郵局。發(fā)送者和接受者通過隊(duì)列來進(jìn)行交互,隊(duì)列的大小可以視為無限的,多個(gè)發(fā)送者可以發(fā)生給一個(gè)隊(duì)列,多個(gè)接收者...
摘要:每當(dāng)我們收到一條消息,這個(gè)回調(diào)函數(shù)就被皮卡庫(kù)調(diào)用。接下來,我們需要告訴這個(gè)特定的回調(diào)函數(shù)應(yīng)該從我們的隊(duì)列接收消息為了讓這個(gè)命令成功,我們必須確保我們想要訂閱的隊(duì)列存在。生產(chǎn)者計(jì)劃將在每次運(yùn)行后停止歡呼我們能夠通過發(fā)送我們的第一條消息。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 介紹 RabbitMQ是一個(gè)消息代理:它接受和轉(zhuǎn)發(fā)消息。你...
摘要:最近在研究做消息隊(duì)列時(shí),順便看了一下做消息隊(duì)列的實(shí)現(xiàn)。遠(yuǎn)程連接時(shí)需要認(rèn)證實(shí)例化連接對(duì)象實(shí)例化鏈接參數(shù)對(duì)象創(chuàng)建新的通道模式向綁定到指定的中發(fā)送消息,消費(fèi)者從中取出數(shù)據(jù),類似于廣播模式發(fā)布訂閱模式。 最近在研究redis做消息隊(duì)列時(shí),順便看了一下RabbitMQ做消息隊(duì)列的實(shí)現(xiàn)。以下是總結(jié)的RabbitMQ中三種exchange模式的實(shí)現(xiàn),分別是fanout, direct和topic。 ...
摘要:?jiǎn)卧~可以是任何東西,但通常它們指定了與該消息相關(guān)的一些功能。消息將使用由三個(gè)字兩個(gè)點(diǎn)組成的路由鍵發(fā)送。另一方面,只會(huì)進(jìn)入第一個(gè)隊(duì)列,而只會(huì)進(jìn)入第二個(gè)隊(duì)列。不匹配任何綁定,因此將被丟棄。代碼幾乎與前一個(gè)教程中的代碼相同。 源碼:https://github.com/ltoddy/rabbitmq-tutorial Topics (using the Pika Python client)...
閱讀 1134·2021-11-08 13:13
閱讀 1716·2019-08-30 15:55
閱讀 2770·2019-08-29 11:26
閱讀 2436·2019-08-26 13:56
閱讀 2558·2019-08-26 12:15
閱讀 2137·2019-08-26 11:41
閱讀 1402·2019-08-26 11:00
閱讀 1537·2019-08-23 18:30