摘要:可以簡單方便的通過配置,并可以向和中發消息來驗證自己的理解。然后通過發送消息,可以隨便填寫,因為是類型的,不起作用。這種情況下,隊列之間是互斥關系,一個消息最多只能進入一個隊列。
現在很多開源軟件都提供了對應的web管理界面,rabbitmq也不例外,rabbitmq提供了一個web插件。當rabbit-server啟動之后,即在瀏覽器中通過http://localhost:15672/地址訪問頁面,提供一個比命令rabbitmqctl更友好的學習rabbitmq的方式。可以簡單方便的通過配置rabbitmq,并可以向exchange和queue中發消息來驗證自己的理解。如下圖:
Rabbitmq 常用三種exchange類型: Fanout exchange:這是處理邏輯最簡單的exchange類型,實際上它沒有任何邏輯,它把進入該exchange的消息全部轉發給每一個綁定的隊列中,如果這個exchange沒有隊列與之綁定,消息會被丟棄。
測試:
新建一個fanout類型的exchange,名稱叫fanoutTest,并綁定兩個routing key是hello.world的隊列,如下圖所示。
然后通過exchange發送消息,routing key可以隨便填寫,因為是fanout類型的exchange,routing key不起作用。點擊publish按鈕,即可發送消息。
兩個消息隊列都接收到了對應的消息,如下圖所示,(消費隊列的時候有個Requeue的選項,如果是“Yes”,消息會再入隊,如果是“NO”,則消息被消費之后隊列中就不會存在這個消息了)
Direct exchange這種類型的交換機Fancout 類型的交換機智能一些,它會根據routing key來決定把消息具體扔到哪個消息隊列中。通過exchange發消息的時候會指定一個routing key,只有當routing key和與隊列綁定的routing key一樣的時候,消息才對發送到對應的消息隊列。即,如果與某個隊列綁定的routing key叫hello.world,則通過exchange發送的routing key必須也是hello.world,該隊列才能接收到消息(可按上述步驟進行驗證)。這種情況下,隊列之間是互斥關系,一個消息最多只能進入一個隊列。
Topic exchangeTopic exchange是最靈活的exchange,它會把exchange的routing key與綁定隊列的routing key進行模式匹配。Routing key中可以包含 和#兩種符號,#號可以用來匹配一個或者多個單詞,用來匹配正好一個單詞。官方的下圖很好地說明了這個問題,讀者最好自己動手驗證一下。
Python腳本操作Rabbitmqpython有多個可以接入rabbitmq的庫,pika是官方推薦的一個。我在公司批量創建消息隊列的需求,于是寫了一個python批量創建消息隊列的腳本。
首先安裝pika:
sudo pip install pika==0.10.0
請輸入代碼 __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()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37627.html
摘要:交易所在本教程的前幾部分中,我們發送消息并從隊列中接收消息。消費者是接收消息的用戶的應用程序。中的消息傳遞模型的核心思想是生產者永遠不會將任何消息直接發送到隊列中。交換和隊列之間的關系稱為綁定。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 發布 / 訂閱 (using the Pika Python client) 本章節教程重點介紹的...
摘要:為了預防消息丟失,提供了,即工作進程在收到消息并處理后,發送給,告知這時候可以把該消息從隊列中刪除了。如果工作進程掛掉了,沒有收到,那么會把該消息重新分發給其他工作進程。之前在發布消息時,的值為即使用。 HelloWorld 簡介 RabbitMQ:接受消息再傳遞消息,可以視為一個郵局。發送者和接受者通過隊列來進行交互,隊列的大小可以視為無限的,多個發送者可以發生給一個隊列,多個接收者...
摘要:每當我們收到一條消息,這個回調函數就被皮卡庫調用。接下來,我們需要告訴這個特定的回調函數應該從我們的隊列接收消息為了讓這個命令成功,我們必須確保我們想要訂閱的隊列存在。生產者計劃將在每次運行后停止歡呼我們能夠通過發送我們的第一條消息。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 介紹 RabbitMQ是一個消息代理:它接受和轉發消息。你...
摘要:最近在研究做消息隊列時,順便看了一下做消息隊列的實現。遠程連接時需要認證實例化連接對象實例化鏈接參數對象創建新的通道模式向綁定到指定的中發送消息,消費者從中取出數據,類似于廣播模式發布訂閱模式。 最近在研究redis做消息隊列時,順便看了一下RabbitMQ做消息隊列的實現。以下是總結的RabbitMQ中三種exchange模式的實現,分別是fanout, direct和topic。 ...
摘要:單詞可以是任何東西,但通常它們指定了與該消息相關的一些功能。消息將使用由三個字兩個點組成的路由鍵發送。另一方面,只會進入第一個隊列,而只會進入第二個隊列。不匹配任何綁定,因此將被丟棄。代碼幾乎與前一個教程中的代碼相同。 源碼:https://github.com/ltoddy/rabbitmq-tutorial Topics (using the Pika Python client)...
閱讀 1122·2021-11-08 13:13
閱讀 1707·2019-08-30 15:55
閱讀 2761·2019-08-29 11:26
閱讀 2426·2019-08-26 13:56
閱讀 2549·2019-08-26 12:15
閱讀 2125·2019-08-26 11:41
閱讀 1393·2019-08-26 11:00
閱讀 1530·2019-08-23 18:30