2018-09-13 RabbitMQ

在RabbitMQ中有三種常用的轉(zhuǎn)發(fā)方式,分別是:

DirectExchange:路由鍵方式轉(zhuǎn)發(fā)消息。

FanoutExchange:廣播方式轉(zhuǎn)發(fā)消息。

TopicExchange:主題匹配方式轉(zhuǎn)發(fā)消息。

在RabbitMQ內(nèi)有個(gè)virtual-host即虛擬主機(jī)的概念,一個(gè)RabbitMQ服務(wù)可以配置多個(gè)虛擬主機(jī),每一個(gè)虛擬機(jī)主機(jī)之間是相互隔離,相互獨(dú)立的,授權(quán)用戶到指定的virtual-host就可以發(fā)送消息到指定隊(duì)列。

多節(jié)點(diǎn)時(shí)消息具體分發(fā)到哪個(gè)節(jié)點(diǎn)并不是固定的,完全是RabbitMQ分發(fā)機(jī)制來控制。

我們?cè)赒ueueEnum內(nèi)配置的路由鍵時(shí)有個(gè)特殊的符號(hào):#,在RabbitMQ消息隊(duì)列內(nèi)路由配置#時(shí)表示可以匹配零個(gè)或多個(gè)字符。我們TopicEnum枚舉內(nèi)定義的register.user,則是可以匹配QueueEnum枚舉定義register.#隊(duì)列的路由規(guī)則;

除此之外比較常用到的特殊字符還有一個(gè)*,在RabbitMQ消息隊(duì)列內(nèi)路由配置*時(shí)表示可以匹配一個(gè)字符,我們QueueEnum定義路由鍵如果修改成register.*時(shí),發(fā)送消息時(shí)路由為register.user則是可以接受到消息的。但如果發(fā)送時(shí)的路由為register.user.account時(shí),則是無法匹配該消息。


? ? ? ? 通過RabbitTemplate實(shí)例的convertAndSend方法將對(duì)象類型轉(zhuǎn)換成JSON字符串后發(fā)送到消息隊(duì)列服務(wù)端,RabbitMQ接受到消息后根據(jù)注冊(cè)的消費(fèi)者并且路由規(guī)則篩選后進(jìn)行消息轉(zhuǎn)發(fā),并實(shí)現(xiàn)消息的消費(fèi)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 來源 RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。支持消息的持久化、事務(wù)、擁塞控...
    jiangmo閱讀 10,505評(píng)論 2 34
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 16,198評(píng)論 2 11
  • 我們?cè)谥暗膬蓚€(gè)章節(jié)第四十一章: 基于SpringBoot & RabbitMQ完成DirectExchange分...
    恒宇少年閱讀 4,251評(píng)論 19 22
  • 昨晚上回到家里,兒子興高采烈地跑過來要抱我,老媽立刻喊到:“不要用力抱媽媽?!?他便輕手輕腳的抱住我的腰?!皨寢專?..
    暮羽初心閱讀 542評(píng)論 11 11

友情鏈接更多精彩內(nèi)容