精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

RocketMQ消息重試機制解析!

開發 架構
由于網絡抖動、服務宕機等一些不確定的因素,RocketMQ在發送消息的時候很有可能出現消息發送或者消費失敗的問題。

由于網絡抖動、服務宕機等一些不確定的因素,RocketMQ在發送消息的時候很有可能出現消息發送或者消費失敗的問題。

所以RocketMQ消息重試分為2種:

?Producer端重試和Consumer端重試。

Producer端重試

?生產者端的消息失敗,也就是Producer往MQ上發消息沒有發送成功。

  • 比如網絡抖動致使生產者發送消息到MQ失敗。

這種消息失敗重試可以手動設置發送失敗重試的次數。

producer.setRetryTimesWhenSendFailed(3);

官方說明

?Producer的send方法本身支持內部重試。

重試邏輯:

  • 默認至多重試2次。
  • 這個方法的總耗時時間不超過sendMsgTimeout設置的值,默認10s。

如果本身向Broker發送消息產生超時異常,就不會再重試。

  • 以上策略也是在一定程度上保證了消息可以發送成功。

如果業務對消息可靠性要求比較高,建議增加相應的重試邏輯:

  • 比如調用send同步方法發送失敗時,則嘗試將消息存儲到DB。
  • 然后由后臺線程定時重試,確保消息一定到達Broker。

重試策略

消息發送重試有三種策略:

?同步發送失敗策略、異步發送失敗策略和消息刷盤失敗策略。

同步發送失敗策略:

?普通消息,消息發送默認采用round-robin策略(輪轉)來選擇所發送到的隊列。

  • 如果發送失敗,默認重試2次。

但在重試時是不會選擇上次發送失敗的Broker,而是選擇其它Broker。

DefaultMQProducer producer = new DefaultMQProducer("pg");
// 設置同步發送失敗時重試發送的次數,默認為2次
producer.setRetryTimesWhenSendFailed(3);
// 設置發送超時時限為5s,默認10s
producer.setSendMsgTimeout(5000);

異步發送失敗策略:

?異步發送失敗重試時,異步重試不會選擇其他Broker,僅在當前Broker上做重試。

  • 所以該策略無法保證消息不丟失。
DefaultMQProducer producer = new DefaultMQProducer("pg");
producer.setNamesrvAddr("rocketmqOS:9876");
// 指定異步發送失敗后不進行重試發送
producer.setRetryTimesWhenSendAsyncFailed(0);

消息刷盤失敗策略:

?消息刷盤超時,默認是不會將消息嘗試發送到其他Broker。

對于重要消息可以通過在Broker的配置文件設置retryAnotherBrokerWhenNotStoreOK屬性為true來開啟。

幾種情況

異步發送在發送過程中出現異常進行重試:

?在解析請求結果時,發現響應狀態碼有其它異常(消息可能未正確被Broker處理)會繼續進行重試。

  • 重試依然選擇當前Broker。

但是如果響應結果不為空的話,即使處理響應時發生異常也不會進行重試。

同步發送時:

?如果發送過程中沒有異常,但是發送結果不OK,也會選擇另一個Broker繼續進行重試。

順序消息發送失敗不進行重試:

?順序消息:指的是同步+指定消息隊列的方式發送。

Consumer端重試

消息正常的到了消費者,結果消費者發生異常,處理失敗了。

?例如反序列化失敗,消息數據本身無法處理等。

順序消息

順序消息的消費重試

?順序消息,當Consumer消費消息失敗后,為了保證消息的順序性,其會自動不斷地進行消息重試,直到消費成功。

  • 消費重試默認間隔時間為1000ms。

重試期間應用會出現消息消費被阻塞的情況。

DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("cg");
// 順序消息消費失敗的消費重試時間間隔,單位毫秒,默認為1000,其取值范圍為[10, 30000]
consumer.setSuspendCurrentQueueTimeMillis(100);

由于對順序消息的重試是無休止的,不間斷的,直至消費成功。

  • 所以,對于順序消息的消費,務必要保證應用能夠及時監控并處理消費失敗的情況,避免消費被永久性阻塞。

?注意:順序消息沒有發送失敗重試機制,但具有消費失敗重試機制。

消費狀態

?順序消費目前兩個狀態:SUCCESS和SUSPEND_CURRENT_QUEUE_A_MOMENT。

SUSPEND_CURRENT_QUEUE_A_MOMENT意思是先暫停消費一下:

  • 過SuspendCurrentQueueTimeMillis時間間隔后再重試一下,而不是放到重試隊列里。
public enum ConsumeOrderlyStatus {
    SUCCESS,
    
    @Deprecated
    ROLLBACK,
    
    @Deprecated
    COMMIT,
    
    SUSPEND_CURRENT_QUEUE_A_MOMENT;
}

并發消息

并發消息的消費重試

?在并發消費中,可能會有多個線程同時消費一個隊列的消息。

因此即使發送端通過發送順序消息保證消息在同一個隊列中按照FIFO的順序,也無法保證消息實際被順序消費。

  • 所有并發消費也可以稱之為無序消費。

對于無序消息(普通消息、延時消息、事務消息):

  • 當Consumer消費消息失敗時,可以通過設置返回狀態達到消息重試的效果。

注意:

?無序消息的重試只針對集群消費模式生效。

廣播消費模式不提供失敗重試特性:即消費失敗后,失敗消息不再重試,繼續消費新的消息。

消費狀態

Consumer端消息消費有兩種狀態:

?一個是成功(CONSUME_SUCCESS),一個是失敗&稍后重試(RECONSUME_LATER)。

Consumer為了保證消息消費成功,只有使用方明確表示消費成功。

  • 返回CONSUME_SUCCESS,RocketMQ才會認為消息消費成功。

若是消息消費失敗,只要返回:ConsumeConcurrentlyStatus.RECONSUME_LATER。

  • RocketMQ就會認為消息消費失敗了,要重新投遞。
public enum ConsumeConcurrentlyStatus {
    CONSUME_SUCCESS,
    RECONSUME_LATER;   
}

重試機制

?為了保證消息是確定被至少消費成功一次,RocketMQ會把這批消息重發回Broker。

  • Topic不是原Topic而是一個RETRY Topic。

在延遲的某個時間點(默認是10秒,業務可設置)后,再次投遞。

?而若是一直這樣重復消費都持續失敗到必定次數(默認16次),就會投遞到死信隊列

在啟動Broker的過程當中,能夠觀察到以下輸出:

2024-09-19 16:29:58 INFO main - messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

RECONSUME_LATER策略:

?若是消費失敗,那么1S后再次消費,若是失敗,那么5S后,再次消費,…… 直至2H后若是消費還失敗。

  • 那么該條消息就會終止發送給消費者了。

消息重試間隔時間如下:

重試次數

與上次重試的間隔時間

重試次數

與上次重試的間隔時間

1

10秒

9

7分鐘

2

30秒

10

8分鐘

3

1分鐘

11

9分鐘

4

2分鐘

12

10分鐘

5

3分鐘

13

20分鐘

6

4分鐘

14

30分鐘

7

5分鐘

15

1小時

8

6分鐘

16

2小時

?某條消息在一直消費失敗的前提下,將會在接下來的4小時46分鐘之內進行16次重試。

  • 超過這個時間范圍消息將不再重試投遞,而被投遞至死信隊列

修改消費重試次數:

DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("cg");
// 修改消費重試次數
consumer.setMaxReconsumeTimes(10);

基本原理

?重試的 Message,RocketMQ 的做法并不是將其投遞回原 Topic重試隊列。

每個 ConsumerGroup 都有自己的重試隊列:

  • 其名稱是由特定的前綴拼接上 ConsumerGroup 所組成,默認 %RETRY%+消費者組名稱。
  • 所以在 Consumer 啟動時,就會同時消費其 ConsumerGroup 對應的重試隊列和普通隊列。

消費失敗的 Message,Consumer 會將其投回 Broker:

  • 相當于這條 Message 已經被消費掉了,之后重試的只是內容相同、但實際不是同一條的 Message。
  • 然后會校驗重試的次數,如果達到16次則會進入死信隊列 ,組成為 %DLQ%+消費者組名稱。
  • 未達到最大重試次數,則會根據重試間隔時間等級將其投遞到延遲隊列SCHEDULE_TOPIC_XXXX中。
  • 然后等到了延遲等級對應的時間之后,再投遞到 ConsumerGroup 所對應的重試隊列當中,供后續消費。

消息重復

如果消費端收到兩條一樣的消息,應該怎樣處理?

《RocketMQ 原理簡介》中講到:

?RocketMQ 無法避免消息重復。

所以如果業務對消費重復非常敏感,務必要在業務側去重,有以下幾種去重方式:

?

消費端處理消息的業務邏輯保持冪等性。

  • 如何保證冪等性,可以看我之前的文章!

保證每條消息都有唯一編號且保證消息處理成功與去重表的日志同時出現。

  • 利用一張日志表來記錄已經處理成功的消息的ID。
  • 如果新到的消息ID已經在日志表中,那么就不再處理這條消息。
責任編輯:姜華 來源: 月伴飛魚
相關推薦

2025-01-03 08:44:37

kafka消息發送策略

2022-11-14 08:19:59

重試機制Kafka

2022-05-06 07:44:10

微服務系統設計重試機制

2017-07-02 16:50:21

2020-07-19 15:39:37

Python開發工具

2025-02-26 10:49:14

2021-02-20 10:02:22

Spring重試機制Java

2017-06-16 15:16:15

2023-11-27 07:44:59

RabbitMQ機制

2023-10-27 08:20:12

springboot微服務

2024-10-29 08:34:27

RocketMQ消息類型事務消息

2024-11-11 13:28:11

RocketMQ消息類型FIFO

2024-11-14 09:10:13

消費者RocketMQ負載均衡

2025-05-28 01:15:00

Golang重試機制

2023-11-06 08:00:38

接口高可用機制

2025-09-30 01:55:00

SpringWebClientHTTP

2024-08-22 18:49:23

2025-04-18 03:00:00

2024-01-04 18:01:55

高并發SpringBoot

2022-06-13 11:05:35

RocketMQ消費者線程
點贊
收藏

51CTO技術棧公眾號

男女羞羞视频在线观看| 国产寡妇亲子伦一区二区三区四区| 99蜜月精品久久91| 一区在线中文字幕| 国产伦一区二区三区色一情| 高潮毛片又色又爽免费 | 成人在线免费观看黄色| 91麻豆国产精品久久| 国产一区二区丝袜| 亚洲第一在线播放| 你懂的亚洲视频| 亚洲欧洲在线免费| 色哟哟视频在线| 欧美一级做一级爱a做片性| 亚洲高清免费在线| 一区视频二区视频| 激情小说 在线视频| 成人精品视频一区二区三区尤物| 国产女同一区二区| 欧美一二三区视频| 午夜亚洲福利| 色青青草原桃花久久综合| 性欧美丰满熟妇xxxx性久久久| 日本亚洲欧洲无免费码在线| 欧美日韩一区二区免费视频| 国产精品69久久久| 黄色动漫在线| 国产精品国产a| 日本免费高清一区二区| 欧美亚洲精品在线观看| 国产揄拍国内精品对白| 国产剧情久久久久久| 国产成人一级片| 在线观看亚洲| 欧美日本亚洲视频| 污污的视频在线免费观看| 不卡中文字幕| 夜夜嗨av色综合久久久综合网| 国产精品无码一区二区三| 大桥未久女教师av一区二区| 欧美xingq一区二区| 天堂av.com| 91国产一区| 在线播放国产精品二区一二区四区| 中文久久久久久| 免费成人美女女| 欧美专区在线观看一区| 国产裸体免费无遮挡| 黄色亚洲网站| 色欧美乱欧美15图片| 国产成人久久777777| 综合日韩av| 色国产精品一区在线观看| 国产裸体舞一区二区三区| 一二三四视频在线中文| 精品国产成人在线| 欧美亚洲一二三区| 超碰一区二区| 日本韩国视频一区二区| 性欧美极品xxxx欧美一区二区| 国产v综合v| 欧美三级三级三级爽爽爽| 激情综合网俺也去| 五月天色综合| 日韩一区二区三区在线| 免费看黄色片的网站| www.神马久久| 亚洲欧美国产日韩中文字幕| av永久免费观看| 99久久婷婷| 欧美黑人性生活视频| 久久久久久久久久久久久久av| 老鸭窝亚洲一区二区三区| 国产99久久精品一区二区永久免费 | 欧美色123| 国产69久久精品成人| 波多野结衣高清在线| 久久爱www久久做| 99国精产品一二二线| 天堂中文资源在线观看| 久久精品一区二区三区不卡| 亚洲欧洲日韩精品| 日本色护士高潮视频在线观看| 亚洲成a人v欧美综合天堂| 无码人妻丰满熟妇区毛片18| 精品国产美女a久久9999| 日韩限制级电影在线观看| 在线免费观看a级片| 欧美wwwww| 国内精品久久久久影院 日本资源| 亚洲欧美精品一区二区三区| 久久精品国产一区二区三区免费看| 91观看网站| 欧美美乳在线| 亚洲主播在线播放| 日本va中文字幕| y111111国产精品久久久| 国产亚洲欧美日韩精品| 免费毛片在线播放免费| 日韩av一级片| 国产伦精品一区二区三区在线 | 岛国大片在线免费观看| 欧美女王vk| 欧美肥臀大乳一区二区免费视频| 69av视频在线观看| 99热国产精品| 无码人妻精品一区二区蜜桃百度| 日韩网站中文字幕| 精品99久久久久久| 免费国产羞羞网站美图| 久久精品男女| 国产精品久久久久久久免费大片| 自拍视频在线| 色婷婷亚洲一区二区三区| 又大又长粗又爽又黄少妇视频| 欧美在线电影| 国语自产在线不卡| 精品国产区一区二| 国产精品久久久久久久蜜臀| 黄色免费视频大全| 第一区第二区在线| www.欧美免费| 国产精品xxxxxx| 91色乱码一区二区三区| 免费人成自慰网站| 视频一区在线| 久久中国妇女中文字幕| 在线免费观看高清视频| 久久久久国产精品麻豆| 人妻精品无码一区二区三区 | 99亚洲精品视频| 成人午夜sm精品久久久久久久| 日韩激情av在线免费观看| 国产真实夫妇交换视频| 国产成人午夜精品影院观看视频| 伊人久久大香线蕉av一区| 精品成人av| 国产亚洲精品久久久久动| av黄色在线看| 91在线免费视频观看| 日本丰满少妇xxxx| 美女视频亚洲色图| 韩国一区二区电影| 高潮毛片7777777毛片| 亚洲综合激情另类小说区| 一本之道在线视频| 亚洲一区二区| 97久久人人超碰caoprom欧美| 国产午夜精品久久久久免费视| 欧美裸体bbwbbwbbw| 欧美xxxooo| 国内不卡的二区三区中文字幕| 色中文字幕在线观看| 在线欧美激情| 欧美日韩成人在线视频| 蜜臀久久99精品久久久| 福利二区91精品bt7086| 波多野结衣 在线| 秋霞午夜鲁丝一区二区老狼| 亚洲成人自拍| 国产剧情一区二区在线观看| 九色91av视频| 天天操天天干天天干| 欧美性猛交xxxx偷拍洗澡| 男人操女人动态图| 久久超碰97中文字幕| 欧美美女黄色网| 女同久久另类99精品国产| 欧美专区国产专区| 网友自拍视频在线| 日韩女优电影在线观看| 日韩男人的天堂| 日本一区二区视频在线| 中文字幕在线视频精品| 亚洲黄色高清| 五月天亚洲综合小说网| 欧美黄视频在线观看| 午夜精品美女自拍福到在线| 麻豆av电影在线观看| 欧美在线观看视频一区二区| 国产又黄又爽又无遮挡| 97aⅴ精品视频一二三区| 国产嫩草在线观看| 欧美国产精品| 日韩精品av一区二区三区| 精品久久久久久久久久岛国gif| 91国产一区在线| 视频一区二区三区不卡| 亚洲第一男人天堂| 中文字幕一区二区三区四区视频| 亚洲已满18点击进入久久| caopeng视频| 成人一区二区三区视频在线观看| 99视频在线免费| 欧美天天在线| 午夜精品一区二区三区在线观看| 99亚洲乱人伦aⅴ精品| 国产精品成人va在线观看| 欧美卡一卡二| 色婷婷综合成人| 天堂在线视频网站| 欧美一区二区三区在线电影 | 僵尸再翻生在线观看| 最近2019中文字幕mv免费看 | 一级做a爱片久久| 99精品欧美一区二区| 不卡的av网站| 在线免费黄色小视频| 日韩电影在线免费看| 欧美精品久久久久久久久久久| 首页国产精品| 日韩在线国产| 在线观看欧美理论a影院| wwwxx欧美| 欧美97人人模人人爽人人喊视频| 欧美最近摘花xxxx摘花| 成人超碰在线| 欧美另类交人妖| 欧美日韩xx| 国产亚洲欧美另类中文| 欧美色图另类| 日韩电影大全免费观看2023年上 | 国产亚洲精品美女久久久| 色香蕉在线视频| 精品第一国产综合精品aⅴ| 国产精品亚洲lv粉色| 欧美三级日韩三级| 一区二区乱子伦在线播放| 欧美性xxxx极品hd欧美风情| 日产亚洲一区二区三区| 亚洲香肠在线观看| 538精品在线观看| 亚洲天堂成人网| 97在线观看视频免费| 国产精品视频你懂的| 国产一级久久久久毛片精品| 久久久另类综合| 色噜噜在线观看| 99国产精品视频免费观看| 欧美xxxx×黑人性爽| 粉嫩av一区二区三区粉嫩| 91丨porny丨九色| 国产精品一级片在线观看| 中文字幕第22页| 国产毛片精品一区| 色哟哟在线观看视频| 国产福利一区二区三区视频在线| 深夜福利网站在线观看| 国产成人亚洲精品狼色在线| 久久发布国产伦子伦精品| 国产专区综合网| 少妇性l交大片7724com| 粉嫩高潮美女一区二区三区| 小毛片在线观看| 99久久精品免费观看| 中文字幕丰满孑伦无码专区| 久久久久久久久久久黄色| 亚洲码无人客一区二区三区| 欧美—级在线免费片| 国产成人免费在线观看视频| 亚洲女同一区二区| 九九九国产视频| 欧美视频一区二区三区…| 日本精品入口免费视频| 欧美日韩国产高清一区| 亚洲va天堂va欧美ⅴa在线| 亚洲国模精品一区| 91av免费观看91av精品在线| 日韩脚交footjobhd| 日韩av不卡电影| 久久69成人| yy111111少妇影院日韩夜片| 美女视频免费精品| 日韩视频专区| 欧美1区免费| 欧美色图色综合| 久久se这里有精品| 老司机午夜免费福利| 久久香蕉国产线看观看99| 啪啪一区二区三区| 亚洲丶国产丶欧美一区二区三区| 丰满少妇xoxoxo视频| 欧美精选一区二区| 香蕉视频免费在线看| 中文字幕精品在线| gogo高清午夜人体在线| 国产精品成熟老女人| 日韩激情欧美| 日本在线成人一区二区| 欧美黄色大片网站| 北条麻妃在线一区| 国产成人精品影院| 欧美日韩中文字幕视频| 一区二区三区不卡视频| 91久久国产综合久久91| 精品日韩在线一区| sese一区| 日本高清不卡的在线| 欧美日韩黄网站| 日本成人黄色| 在线日韩av| 中文字幕色网站| 国产日韩一级二级三级| 久久久精品人妻一区二区三区四| 欧美系列亚洲系列| 肉丝一区二区| 久久99久久99精品免观看粉嫩 | 免费在线午夜视频| 奇米4444一区二区三区| 91精品国产自产在线丝袜啪| 亚洲三区在线| 久久不射网站| 四虎精品一区二区| 亚洲欧美日韩综合aⅴ视频| av片免费观看| 亚洲欧美日韩区| 欧美性猛交xxxx乱大交蜜桃| 波兰性xxxxx极品hd| 色哟哟国产精品免费观看| 亚洲黄色在线播放| 久久躁狠狠躁夜夜爽| 日韩高清不卡| 免费h精品视频在线播放| 激情五月***国产精品| 网站在线你懂的| 国产精品久久久久久一区二区三区| 欧美日韩综合一区二区三区| 亚洲精品97久久| av福利在线导航| 99re在线视频上| 这里只有精品在线| 一二三av在线| 亚洲色图第一区| 国产模特av私拍大尺度| 日韩中文字幕国产精品| 成人在线高清| 亚洲五月六月| 久久99久久精品欧美| gv天堂gv无码男同在线观看| 91成人免费在线视频| 免费人成在线观看网站| 青青久久av北条麻妃黑人| 小嫩嫩12欧美| 久久久久久久久久久久久国产精品| 99r国产精品| 国产中文字幕视频| 亚洲天堂成人在线视频| 欧美aaa大片视频一二区| 日韩精品欧美一区二区三区| 免费在线观看日韩欧美| 日日操免费视频| 6080国产精品一区二区| 91精品久久久| 国产成人女人毛片视频在线| 一区三区视频| 久久无码人妻精品一区二区三区 | 久久影视免费观看| 久久av偷拍| 免费视频爱爱太爽了| www一区二区| www.五月婷婷.com| 日韩在线观看免费高清| 日本综合精品一区| 精品久久一二三| 欧美国产禁国产网站cc| 国产女人高潮时对白| 欧美精品国产精品日韩精品| 牲欧美videos精品| 乌克兰美女av| 亚洲激情综合网| 天堂av在线7| 国产精品专区h在线观看| 欧美~级网站不卡| 人妻在线日韩免费视频| 欧美网站一区二区| 四虎影院观看视频在线观看| 久久综合给合久久狠狠色| 麻豆国产一区二区| 欧美日韩中文视频| 夜夜嗨av一区二区三区四区| 久久av网站| 久久久精品麻豆| 亚洲午夜精品17c| 国产高清美女一级毛片久久| 91免费版网站入口| 国产美女诱惑一区二区| 亚洲熟女毛茸茸| 日韩av在线网址| 国产激情综合| 日本xxxxxxx免费视频| 亚洲免费资源在线播放| 欧美日韩国产亚洲沙发| 91中文字幕在线| 日韩电影在线观看电影| 妺妺窝人体色www婷婷| 国产小视频91| 岛国精品一区| 日本高清免费观看| 欧美在线观看视频一区二区三区| а√天堂8资源在线|