對mq了解不是很多的,可以看一下下面兩篇文章:
聊聊mq的使用場景
聊聊業務系統中投遞訊息到mq的幾種方式
聊聊訊息消費的幾種方式
如何確保訊息至少消費一次
如何保證訊息消費的冪等性
從消費者的角度出發,分析一下訊息消費的兩種方式:
push方式
pull方式
mq接收到訊息
mq主動將訊息推送給消費者(消費者需提供乙個消費介面)
mq屬於主動方,消費者屬於一種被動消費,一旦有訊息到達mq,會觸發mq推送機制,將訊息推送給消費者,不管消費者處於何種狀態。
消費者**較少:對於消費者來說,只需提供乙個消費介面給mq即可;mq將接收到的訊息,隨即推送到指定的消費介面
訊息實時性比較高:對於消費者來說,訊息一旦到達mq,mq會立即推送給消費者
1.消費者屬於被動方,訊息量比較大時,對消費者效能要求比較高;若消費者機器資源有限,可能會導致壓力過載,引發宕機的情況。
2.對消費者可用性要求比較高:當消費者不可用時,會導致很push失敗,在mq方需要考慮至少推送成功一次,這塊的設計下章節會做說明。
1.消費端採用輪詢的方式,從mq服務中拉取訊息進行消費
2.消費完成通知mq刪除已消費成功的訊息
3.繼續拉取訊息消費
對於消費者來說,是主動方,可以採用執行緒池的方式,根據機器的效能來增加或縮小執行緒池的大小,控制拉取訊息的速度,可以很好的控制自身的壓力。
1.消費者可以根據自己的效能主動控制訊息拉去的速度,控制自己的壓力,不至於把自己弄跨
2.實時性相對於push方式會低一些
3.消費者屬於主動方,控制權更大一些
1.消費方需要實現訊息拉取的**
2.消費速度較慢時,可能導致mq中訊息積壓,訊息消費延遲等
消費者效能較好,對實時性要求比較高的,可以採用push的方式
消費者效能有限,建議採用pull的方式
整體上來說,主要在於消費者的效能,機器的效能如果沒有問題,push和pull都是可以的
聊聊mq中訊息消費的幾種方式
對mq了解不是很多的,可以看一下下面兩篇文章 聊聊mq的使用場景 聊聊業務系統中投遞訊息到mq的幾種方式 聊聊訊息消費的幾種方式 如何確保訊息至少消費一次 如何保證訊息消費的冪等性 從消費者的角度出發,分析一下訊息消費的兩種方式 push方式 pull方式 mq接收到訊息 mq主動將訊息推送給消費者...
聊聊業務系統中投遞訊息到mq的幾種方式
電商中有這樣的乙個場景 下單成功之後送積分的操作,我們使用mq來實現 下單成功之後,投遞一條訊息到mq,積分系統消費訊息,給使用者增加積分 我們主要討論一下,下單及投遞訊息到mq的操作,如何實現?每種方式優缺點?step1 start transaction step2 生成訂單 step3 投遞訊...
MQ中如何保持訊息的冪等性(不被重複消費)
問題 如何保證訊息不被重複消費?或者說,如何保證訊息消費的冪等性?分析其實這是很常見的乙個問題,這倆問題基本可以連起來問。既然是消費訊息,那肯定要考慮會不會重複消費?能不能避免重複消費?或者重複消費了也別造成系統異常可以嗎?這個是 mq 領域的基本問題,其實本質上還是問你使用訊息佇列如何保證冪等性,...