MQ如何解決訊息的順序性

2022-08-09 18:21:13 字數 361 閱讀 8242

一、訊息的順序性

1、延遲佇列:設定乙個全域性變數index,根據實際情況一次按照index++的邏輯一次給訊息佇列設定延遲時間段,可以是0.5s,甚至1s;

弊端:如果a,b,c..訊息佇列消費時間不一致或者出現網路延遲,就會存在後者比前者先消費完的場景;

2、統一消費端:當a消費成功後,通過ack或者consummer-success通知b進行消費

3、rocketmq採用輪詢所有佇列的方式來確定訊息被傳送到哪乙個佇列(負載均衡),比如下面示例中,訂單號相同的的訊息會被先後傳送到同一佇列中:

在獲取到路由資訊以後,會根據messagequeueselector實現的演算法來選擇乙個佇列,同乙個orderid獲取到的肯定是同乙個佇列

MQ如何解決訊息的順序問題和訊息的重複問題

分布式訊息系統作為實現分布式系統可擴充套件 可伸縮性的關鍵元件,需要具有高吞吐量 高可用等特點。而談到訊息系統的設計,就迴避不了兩個問題 1 訊息的順序問題 2 訊息的重複問題 2.1 順序訊息 要實現嚴格的順序訊息,簡單且可行的辦法就是 保證生產者 mqserver 消費者是一對一對一的關係 這樣...

如何保證mq的有序性 訊息佇列如何保證順序性?

主要思路有兩種 1 單執行緒消費來保證訊息的順序性 2 對訊息進行編號,消費者處理時根據編號判斷順序。1 rabbitmq 問題分析 如圖,data1 和 data2 是有順序的,必須 data1 先執行,data2 後執行 這兩個資料被不同的消費者消費到了,可能 data2 先執行,data1 後...

mq如何保證訊息的冪等性

一 訊息的傳送流程 二 出現非冪等性的情況 1 生產者已把訊息傳送到mq,在mq給生產者返回ack的時候網路中斷,故生產者未收到確定資訊,生產者認為訊息未傳送成功,但實際情況是,mq已成功接收到了訊息,在網路重連後,生產者會重新傳送剛才的訊息,造成mq接收了重複的訊息 2 消費者在消費mq中的訊息時...