Rabbitmq系列02---Exchange

個人理解:

交換機的類型劃分個人理解是能過routing key來劃分的,一是否按routing key找隊列;fanout就是不按routingkey找隊列,Direct和Topicr按routingkey找隊列,只是一個模糊找,一個精準找,而headers不按routingkey 是按消頭中的內容找隊列。


一、Fanout(訂閱模式|廣播模式)

 

 

Fanout交換器會把所有發送到該交換器的消息路由到所有與該交換器綁定的消息隊列中。訂閱模式與Binding Key和Routing Key無關,交換器將接受到的消息分發給有綁定關係的所有消息隊列隊列(不論Binding Key和Routing Key是什麼)。類似於子網廣播,子網內的每臺主機都獲得了一份複製的消息。Fanout交換機轉發消息是最快的。

二、Direct(路由模式)

 

 

Direct交換器需要消息的Routing Key與 Exchange和Queue 之間的Binding Key完全匹配,如果匹配成功,將消息分發到該Queue。只有當Routing Key和Binding Key完全匹配的時候,消息隊列纔可以獲取消息。Direct是Exchange的默認模式。RabbitMQ默認提供了一個Exchange,名字是空字符串,類型是Direct,綁定到所有的Queue(每一個Queue和這個無名Exchange之間的Binding Key是Queue的名字)。所以,有時候我們感覺不需要交換器也可以發送和接收消息,但是實際上是使用了RabbitMQ默認提供的Exchange。

三、Topic(通配符模式)

 

 

Topic交換器按照正則表達式模糊匹配:用消息的Routing Key與 Exchange和Queue 之間的Binding Key進行模糊匹配,如果匹配成功,將消息分發到該Queue。Routing Key是一個句點號“. ”分隔的字符串(我們將被句點號“. ”分隔開的每一段獨立的字符串稱爲一個單詞)。Binding Key與Routing Key一樣也是句點號“. ”分隔的字符串。Binding Key中可以存在兩種特殊字符“ * ”與“#”,用於做模糊匹配,其中“*”用於匹配一個單詞,“#”用於匹配多個單詞(也可以是零個或一個)。

例如下面這個消息隊列的場景,用的是topic類型交換器:

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