談談rabbitmq消息隊列

在程序開發中,有很多地方都需要用到消息隊列,rabbitmq是其中的一種消息隊列。rtmq有exchange,路由,隊列組成。當生產者產生了一個消息之後,會進到exchange,然後根據路由綁定特定的隊列,由消費者從隊列中取消息進行消費。

exchange的幾種類型

  1. 扇形
  2. default 默認類型
  3. 直連
  4. topic 基於路由,* 匹配一個,#匹配多個
  5. 路由交換機,跟topic類似,根據路由鍵綁定特定隊列
  6. 頭交換機,根據消息的header數據

rabbitmq的幾種工作模式

  1. 一對一 ,簡單模式,基於默認交換機
  2. 一對多,但是隻有一個消費者可以消費,工作模式,也是基於默認交換機
  3. 發佈訂閱 一個消息被多個消費者消費,重複消費,適用場景,羣發消息
  4. 路由模式,特定的交換機綁定特定的隊列消費
  5. 主題模式,基於topic交換機,*匹配一個,#匹配多個

rabbitmq的適用場景

  1. 併發,有併發需求的時候,先讓併發請求進入消息隊列,然後由程序從消息隊列一個一個消費處理
  2. 異步,像發短信通知,這個就可以直接丟到消息隊列,不用管這個結果,把同步的事情,變成異步,減少等待
  3. 減少數據庫的壓力,如果大量請求,需要訪問數據庫,可能會對數據庫造成壓力,放到消息隊列之後,可以有程序根據數據的承載情況,分批從消息隊列中取消息處理,減輕數據庫壓力
  4. 解耦,比如ABC三個系統,B,C兩個系統都依賴於A系統,這時候,如果有D系統也需要依賴於A系統,那麼就需要修改A系統的代碼,這樣在生產中,對A系統就不友好,如果用消息隊列,就可以讓BCD直接依賴於消息隊列,而不具體依賴於A系統,就不用修改A系統的代碼。減少依賴,有點類似於IOC,不依賴於具體實現,只依賴抽象接口。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章