真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

rabbitmq——通過rabbitmqctl創(chuàng)建exchange和queue

一般來說,exchange和queue都是由我們的業(yè)務程序在運行過程中連接到rabbitmq并創(chuàng)建的。然而也有些特殊的場景,要求業(yè)務程序在連接使用rabbitmq之前,相關的exchange和queue必須預先創(chuàng)建好。這個時候對于測試人員或者運維人員來說,通常的做法是在rabbitmq安裝完成后,啟用rabbitmq_management插件,然后在web控制臺進行操作來創(chuàng)建exchange和queue,并完成綁定動作。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供寧國網(wǎng)站建設、寧國做網(wǎng)站、寧國網(wǎng)站設計、寧國網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、寧國企業(yè)網(wǎng)站模板建站服務,10多年寧國做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

對于當前都是講究自動化運維的時代,這種方式顯然是不能自動化的。那么一些可能的改進的方式是搞個rabbitmq的客戶端寫個小程序,比如python的pika,通過在腳本中調用這些程序,并傳遞相應的參數(shù)完成exchange,queue的創(chuàng)建以及對應的綁定操作。

其實通過rabbitmq本身提供的rabbitmqctl命令,同樣能完成exchange和queue的創(chuàng)建,例如:

rabbitmqctl eval \'rabbit_exchange:declare({resource, <<"/">>, exchange, <<"test-topic">>}, topic, true, false, false, []).\' rabbitmqctl eval \'rabbit_amqqueue:declare({resource, <<"/">>, queue, <<"test-queue">>}, true, false, [], none).\' rabbitmqctl eval \'rabbit_binding:add({binding, {resource, <<"/">>, exchange, <<"test-topic">>}, <<"*.com.cn">>, {resource, <<"/">>, queue, <<"test-queue">>}, []}).\' 這三條命令執(zhí)行后的最終結果是:在 / 虛擬主機下創(chuàng)建了topic類型的,持久化的,名為 test-topic的exchange,創(chuàng)建了持久化的,名為 test-queue 的queue,該隊列以 *.com.cn 的routing key綁定到了 test-topic這個exchange上。

=================================================================

對于 rabbitmqctl eval 官網(wǎng)的文檔里解釋是:計算任意的erlang表達式的值。

其實知道一點erlang語法的,一眼就可以看出上面的例子里,其實就是一個Module:Function(Arg)的調用。

這里需要注意:括號后的那個 . 可別忘了。

那么了解了這些后,剩下的就是exchange,queue創(chuàng)建及綁定動作應該調用哪個模塊的哪個函數(shù)導出函數(shù),參數(shù)的意義和格式是怎樣的。

exchange的創(chuàng)建調用rabbit_exchange的declare函數(shù),該函數(shù)具體聲明為:

declare(XName, Type, Durable, AutoDelete, Internal, Args). XName: exchange的名稱, 具體格式為 {resource, VHost, exchange, Name} VHost為虛擬主機的名稱 Name為exchange的名稱 注意 VHost 和 Name 限定為binary形式, 即<<>> Type: exchange的類型, 可選值為 direct, headers, topic, fanout Durable: 是否需要持久化, true表示持久化, false為非持久化 AutoDelete: 是否自動刪除, true表示自動刪除, false為非自動刪除 Internal: 是否為rabbitmq內部使用, true表示是內部使用, false表示不是內部使用 Args: exchange的其他選項參數(shù), 一般設置為 [] 補充說明:

自動刪除的觸發(fā)條件是:當綁定到該exchange上的所有queue和exchange都已經(jīng)解除綁定時,rabbitmq自動刪除該exchange。

內部使用是指:客戶端不能直接向該exchange投遞消息,只能由rabbitmq自己向這個exchange投遞消息,一般用于exchange到exchange的綁定。另外,rabbitmq的trace機制使用的exchange也是internal類型。

queue的創(chuàng)建應調用rabbit_amqqueue模塊的declare函數(shù),該函數(shù)具體聲明為:

declare(QueueName, Durable, AutoDelete, Args, Owner). QueueName: queue的名稱, 具體格式為 {resource, VHost, queue, Name} VHost為虛擬主機的名稱, Name為queue的名稱 Durable: 是否需要持久化, true表示持久化, false為非持久化 AutoDelete: 是否自動刪除, true表示自動刪除, false為非自動刪除 Args: queue的其他選項參數(shù), 包括消息的優(yōu)先級, ttl, 隊列的長度等, 一般設置為 [] Owner: 用于queue的獨占模式, 一般設置為 none

創(chuàng)建綁定關系是調用rabbit_binding模塊的add函數(shù),該函數(shù)具體聲明為:

add(Binding) Binding: 綁定關系, 可以是exchange到exchange, 也可以是exchange到queue 具體格式為 {binding, Source, Key, Destination, Args} Source 為 消息源, 必須為exchange: {resource, VHost, exchange, Name} Key 為 routing-key Destination 為目的 {resource,VHost,exchange,XName} 或者 {resource, VHost, queue, QName} Args 為其他選項參數(shù), 一般設置為 []

回過頭來再看看前面例子中的命令,應該就不陌生了:)

=====================================================

總結:通過rabbitmqctl eval可以在命令行模式下完成exchange,queue的創(chuàng)建及綁定操作。這樣配合shell腳本能較好的達到自動化的方式。


分享題目:rabbitmq——通過rabbitmqctl創(chuàng)建exchange和queue
轉載源于:http://weahome.cn/article/cppphh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部