RabbitMQ 說說Exchange的幾種模式

2021-09-07 09:28:33 字數 1213 閱讀 4053

rabbitmq裡的exchange提供了四種模式,或者叫它型別,它們是fanout,direct,topic和header,其中前三種模式我們用的比較多,所有我們主要介紹前3種!

direct

任何傳送到direct exchange的訊息都會被**到routekey中指定的queue。

1.一般情況可以使用rabbitmq自帶的exchange:」"(該exchange的名字為空字串,下文稱其為default exchange)。

2.這種模式下不需要將exchange進行任何繫結(binding)操作

3.訊息傳遞時需要乙個「routekey」,可以簡單的理解為要傳送到的佇列名字。

4.如果vhost中不存在routekey中指定的佇列名,則該訊息會被拋棄。

fanout

任何傳送到fanout exchange的訊息都會被**到與該exchange繫結(binding)的所有queue上。

1.可以理解為路由表的模式

2.這種模式不需要routekey

3.這種模式需要提前將exchange與queue進行繫結,乙個exchange可以繫結多個queue,乙個queue可以同多個exchange進行繫結。

4.如果接受到訊息的exchange沒有與任何queue繫結,則訊息會被拋棄。

topic

任何傳送到topic exchange的訊息都會被**到所有關心routekey中指定話題的queue上

1.這種模式較為複雜,簡單來說,就是每個佇列都有其關心的主題,所有的訊息都帶有乙個「標題」(routekey),exchange會將訊息**到所有關注主題能與routekey模糊匹配的佇列。

2.這種模式需要routekey,也許要提前繫結exchange與queue。

3.在進行繫結時,要提供乙個該佇列關心的主題,如「#.log.#」表示該佇列關心所有涉及log的訊息(乙個routekey為」mq.log.error」的訊息會被**到該佇列)。

4.「#」表示0個或若干個關鍵字,「*」表示乙個關鍵字。如「log.*」能與「log.warn」匹配,無法與「log.warn.timeout」匹配;但是「log.#」能與上述兩者匹配。

5.同樣,如果exchange沒有發現能夠與routekey匹配的queue,則會拋棄此訊息。

感謝各位的閱讀!

RabbitMQ使用者指南(RabbitMQ C)

rabbitmq c是乙個用於c語言的,與amqp server進行互動的client庫,amqp協議為版本0 9 1。rabbitmq c與server進行互動前需要首先進行login操作,在操作後,可以根據amqp協議規範,執行一系列操作。介面描述 amqp connection state t...

RabbitMQ使用者指南(RabbitMQ C)

rabbitmq c客戶端使用說明 rabbitmq c是乙個用於c語言的,與amqp server進行互動的client庫,amqp協議為版本0 9 1。rabbitmq c與server進行互動前需要首先進行login操作,在操作後,可以根據amqp協議規範,執行一系列操作。這裡,根據專案需求,...

RabbitMQ使用者指南(RabbitMQ C)

rabbitmq c是乙個用於c語言的,與amqp server進行互動的client庫,amqp協議為版本0 9 1。rabbitmq c與server進行互動前需要首先進行login操作,在操作後,可以根據amqp協議規範,執行一系列操作。介面描述 amqp connection state t...