談談rabbitmq訊息佇列

2021-10-05 08:13:34 字數 770 閱讀 3353

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

扇形default 預設型別

直連topic 基於路由,* 匹配乙個,#匹配多個

路由交換機,跟topic類似,根據路由鍵繫結特定佇列

頭交換機,根據訊息的header資料

一對一 ,簡單模式,基於預設交換機

一對多,但是只有乙個消費者可以消費,工作模式,也是基於預設交換機

發布訂閱 乙個訊息被多個消費者消費,重複消費,適用場景,**訊息

路由模式,特定的交換機繫結特定的佇列消費

主題模式,基於topic交換機,*匹配乙個,#匹配多個

併發,有併發需求的時候,先讓併發請求進入訊息佇列,然後由程式從訊息佇列乙個乙個消費處理

非同步,像發簡訊通知,這個就可以直接丟到訊息佇列,不用管這個結果,把同步的事情,變成非同步,減少等待

減少資料庫的壓力,如果大量請求,需要訪問資料庫,可能會對資料庫造成壓力,放到訊息佇列之後,可以有程式根據資料的承載情況,分批從訊息佇列中取訊息處理,減輕資料庫壓力

解耦,比如abc三個系統,b,c兩個系統都依賴於a系統,這時候,如果有d系統也需要依賴於a系統,那麼就需要修改a系統的**,這樣在生產中,對a系統就不友好,如果用訊息佇列,就可以讓bcd直接依賴於訊息佇列,而不具體依賴於a系統,就不用修改a系統的**。減少依賴,有點類似於ioc,不依賴於具體實現,只依賴抽象介面。

訊息佇列Rabbitmq

rabbitmq server rabbitmqctl reset rabbitmqctl stop rabbitmqctl stop rabbitmqctl list users rabbitmqctl list queues rabbitmqctl add user user name user...

訊息佇列RabbitMQ

這是乙個很嚴肅的問題。系統之間解除耦合,可以讓不同語言編寫的系統通訊互動 保證伺服器負載不會飆公升。高大上一點就是流量削峰。讓程式變成非同步,提高響應速度。把費時任務放到另乙個程序或執行緒去執行。redis實現 剛開始學習redis時,一看這個鍊錶不就是給佇列準備的嗎?所以,一心扎進去,要寫個佇列出...

RabbitMQ訊息佇列

訊息發布接收流程 接收訊息 工作模式 publish subscribe 發布訂閱模式 發布訂閱publish subscribe和工作模式work queues的區別 routing 路由模式 區別 topics 區別 header 宣告佇列 bean queue inform sms publi...