rabbitmq 3 entities之exchange

exchanges, routing key and queues

exchanges:

exchange attributes:

exchange type:4種,direct exchange,amq.direct; fanout exchange, amq.fanout; topic exchange, amq.topic and headers exchange, amq.match and amq.headers

name

durability: 用來標識當broker重啓時,此exchange 是否還有效,如果爲flase標識此exchnage是transient,則重啓broker後,要重定義此exchange

auto-delete:爲true時,當沒有queue綁定在此exchange時,自動刪掉此exchange

arguments:爲插件和broker-specific feature使用

default exchange:一個默認的exchange是direct exchange type的,沒有名字即空字符,由rabbitMq server (message broker)已經predefined的empty string,其中的一個特點是,任何一個新創建的queue,都會自動綁定到此默認的exchange,其名字爲空字符,沒有名字,並且exchange和此queue的routing key就是queue的名字。

direct exchange:deliver的message帶有一個routingkey1,而exchangeA 和queueA之間通過某一個routingkey2 類型爲string型綁定,如果routingkey1 等於routingkey2,則此message會通過指定的exchangeA deliver到queueA。此種exchange的routingkey只能爲string類型;詳見http://www.rabbitmq.com/tutorials/amqp-concepts.html


Fanout exchange:exchange type爲amq.fanout, 它會把所有從produer deliver給它的message,全部route到與它綁定的queues,此時routing key是無效的,可以忽略的。比如一條message到達exchange type爲fanout的exchangeA,並且有N個queues綁定在此exchangeA上,則此message會被複制N-1份,發給N個queues,所有fanout exchange適合廣播的情況。


topic exchange:route message to 一個或者多個queues,取決於message 的routing key與, exchange 和queue綁定用的pattern是否match。

headers exchange:通過message headers(包含多個attributes)來匹配,routingkey會被忽略,queue和headers exchange type的exchange A 綁定可以通過設置多個headers來綁定,x-match 屬性用來指定message的header 值等於所有的綁定的headers值(x-match=all)還是任一一個header值(x-match=any)就算匹配的指示,

headers exchange類似於direct exchange,區別在於headers exchange 的要對應匹配的message的header不限於string,可以是integer或者hashmap等,同時,headers exchange有個x-match的屬性可以指定任一或者全部匹配的情況。

詳見官網:http://www.rabbitmq.com/tutorials/amqp-concepts.html






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章