精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产又粗又猛视频| 亚洲色图欧美另类| 男人的天堂在线视频免费观看| 日韩精品一二三| 神马久久久久久| 亚洲欧洲日韩综合| av亚洲一区二区三区| 亚洲欧美综合在线精品| 国产精品一区在线观看| 波多野结衣在线电影| 欧美视频官网| 国产一区二区三区毛片| 久久av一区二区三| 国产精品伦一区二区| 亚洲福利视频三区| 亚洲精品一区二区毛豆| 欧美一级视频免费| 老汉av免费一区二区三区| 久久久人成影片一区二区三区| 色婷婷在线影院| 91夜夜蜜桃臀一区二区三区| 色狠狠一区二区| 97在线国产视频| 最近高清中文在线字幕在线观看| www.亚洲在线| 91久久国产自产拍夜夜嗨| 在线免费观看国产精品| 日韩亚洲国产欧美| 久久这里只有精品99| 性欧美一区二区| jizzjizzjizz欧美| 欧美久久久一区| 国产成人av影视| 三妻四妾完整版在线观看电视剧| 亚洲制服丝袜一区| 中文字幕在线中文字幕日亚韩一区 | 亚洲第一视频在线| 紧缚奴在线一区二区三区| 国产精品久久久久久久app| 一级片中文字幕| 激情偷拍久久| 久久香蕉国产线看观看网| 国产又粗又硬视频| 精品国产123区| 亚洲欧美一区二区三区四区| 国产一级二级在线观看| 粉嫩一区二区三区四区公司1| 日韩欧美国产不卡| 久久久久无码精品| 欧美久久亚洲| 日韩一级完整毛片| 麻豆传媒在线看| 日韩一区二区三区精品| 日韩女优制服丝袜电影| 无码人妻少妇色欲av一区二区| 免费一区二区三区在线视频| 欧美一级在线视频| 欧美午夜精品一区二区| 国偷自产视频一区二区久| 日韩精品资源二区在线| 亚洲av无码专区在线播放中文| 一区二区三区四区视频免费观看 | 亚洲超丰满肉感bbw| 日韩视频在线视频| 男人天堂视频在线观看| 日韩欧美在线视频| 国产免费又粗又猛又爽| 欧美一级免费| 日韩精品综合一本久道在线视频| 亚洲午夜久久久久久久久| 欧美a级网站| 国产亚洲精品久久久久久| 亚洲黄色网址大全| 欧美激情1区| 97热在线精品视频在线观看| 免费看一级视频| 欧美aa在线视频| 91久久精品在线| 天天操天天舔天天干| 久久奇米777| 在线观看亚洲视频啊啊啊啊| 污污的网站在线看| 欧美日韩亚洲一区二区| 校园春色 亚洲色图| 亚洲精品a区| 亚洲美女免费精品视频在线观看| 久久一级免费视频| 黄色在线成人| 国产精品久久久久免费a∨大胸| 国产精品久久婷婷| 99精品久久只有精品| 午夜欧美性电影| 尤物视频在线看| 日韩欧美在线视频观看| 午夜xxxxx| 少妇久久久久| 精品自在线视频| 亚洲va在线观看| 国产精品资源在线观看| 欧美一区国产一区| 污的网站在线观看| 欧美在线色视频| 99精品一区二区三区无码吞精| 欧美日韩老妇| 韩国三级日本三级少妇99| 自拍偷拍色综合| 成人av电影免费在线播放| 亚洲欧洲三级| 东京一区二区| 精品福利一二区| 日本少妇aaa| 久久午夜精品一区二区| 成人国产一区二区| 色的视频在线免费看| 福利微拍一区二区| 夜夜爽久久精品91| heyzo久久| 日本一本a高清免费不卡| 国内爆初菊对白视频| 成人免费一区二区三区视频| 国产性生交xxxxx免费| 黄色欧美在线| 欧美国产极速在线| 国产欧美综合视频| 国产精品女主播在线观看| 国产成人精品视频免费看| eeuss鲁片一区二区三区| 久久久91精品| 11024精品一区二区三区日韩| 国产亚洲欧美在线| 国产男女无遮挡| 老司机aⅴ在线精品导航| 久久99国产精品久久久久久久久| 影音先锋国产在线| 欧美国产精品中文字幕| 欧美少妇性生活视频| 伊人久久综合影院| 2019中文字幕在线| 深夜福利在线看| 亚洲va欧美va天堂v国产综合| wwwww在线观看| 国产在线日韩| 精品一区二区国产| 草草视频在线| 日韩精品极品在线观看| 国产黄色免费观看| 久久久噜噜噜久噜久久综合| 97xxxxx| 国产不卡一二三区| 国产精品6699| 91在线导航| 欧美日本乱大交xxxxx| 国精产品一区一区二区三区mba| 免费的国产精品| 一区二区三区久久网| 亚洲aⅴ网站| 免费av在线一区| 丰满肉肉bbwwbbww| 精品日本高清在线播放| 中文字幕一二三四区| 丝袜亚洲精品中文字幕一区| 日日夜夜精品网站| 一区在线不卡| 欧美国产亚洲精品久久久8v| 男人天堂一区二区| 欧美性猛交xxxx富婆弯腰| 99久久精品免费视频| 男人操女人的视频在线观看欧美| 国产高清免费在线| 8848成人影院| 欧美亚洲视频一区二区| www日韩tube| 欧美一区二区三区播放老司机| 精品99久久久久成人网站免费| 不卡的电视剧免费网站有什么| 日本一本二本在线观看| 日韩欧美字幕| 俄罗斯精品一区二区| 亚洲性受xxx喷奶水| 国产午夜精品一区二区三区| 国产麻豆91视频| 午夜不卡在线视频| 日本伦理一区二区三区| 国产suv精品一区二区三区| 1024av视频| 日韩精品永久网址| 国产精品一区二区三区不卡| 成人免费网站www网站高清| 久久九九全国免费精品观看| 头脑特工队2在线播放| 欧美乱妇一区二区三区不卡视频| 国产精品theporn动漫| 国产女人水真多18毛片18精品视频| 夜夜夜夜夜夜操| 国产亚洲精品v| 亚洲欧美日韩国产yyy| youjizzjizz亚洲| 国产精品一区电影| av中文字幕在线看| 色久欧美在线视频观看| 天天色综合久久| 欧美日韩高清在线| 成人毛片18女人毛片| 中文字幕一区不卡| 真实乱视频国产免费观看| 国产**成人网毛片九色 | 91精品日本| 国产狼人综合免费视频| 岛国av在线播放| 久久福利视频网| 国产高清视频在线观看| 亚洲成人999| 国产乱码精品一区二区| 欧美在线免费视屏| 成年人免费高清视频| 亚洲黄色在线视频| www.xx日本| 国产亚洲一二三区| 波多野结衣先锋影音| 国产suv精品一区二区6| 超碰人人草人人| 秋霞成人午夜伦在线观看| 女人喷潮完整视频| 亚洲人成毛片在线播放女女| 久久99国产精品一区| 成人免费av| 日韩高清dvd| 亚洲美女15p| 久99久视频| 欧美黄色影院| 国产日韩二区| baoyu135国产精品免费| 91久久爱成人| 一区二区亚洲视频| 波多野结衣久草一区| 久久中文字幕一区二区| 亚洲qvod图片区电影| а天堂中文最新一区二区三区| 国产剧情久久久久久| 国产黄色精品| 国产精国产精品| 99精品国自产在线| 国产精品欧美激情在线播放| 韩国女主播一区二区| 国产精品三级久久久久久电影| 在线看欧美视频| 国产精品香蕉国产| 日韩精品第二页| 91久久久在线| 欧美成年网站| 高清不卡日本v二区在线| 第四色中文综合网| 精品亚洲一区二区三区四区五区高| 久久a级毛片毛片免费观看| 精品欧美日韩在线| 午夜a一级毛片亚洲欧洲| 日本高清一区| 日韩欧美午夜| 久久99国产精品一区| 雨宫琴音一区二区在线| 尤物av无码色av无码| 免费一区视频| 日本 片 成人 在线| 国产麻豆午夜三级精品| 风韵丰满熟妇啪啪区老熟熟女| www.成人网.com| 国产精品无码久久久久一区二区| 国产日韩欧美不卡| 亚洲女人久久久| 亚洲一区二区视频在线| 国产午夜免费福利| 欧美视频三区在线播放| 国产黄a三级三级看三级| 亚洲国产精品yw在线观看| 黄色免费在线播放| 久久亚洲精品中文字幕冲田杏梨| 国产盗摄在线视频网站| 国产成人精品电影| 成人在线视频区| 精品欧美一区二区在线观看视频| 成人精品中文字幕| 最新av网址在线观看| 国产亚洲精品v| 色噜噜狠狠一区二区三区狼国成人| 成人午夜在线免费| 精品欧美一区二区久久久| 亚洲欧美偷拍三级| 中文字幕视频网站| 日韩视频永久免费| 毛片在线播放网址| 久久香蕉国产线看观看网| 涩涩视频在线免费看| 成人免费午夜电影| 欧美日韩一本| 自拍偷拍亚洲色图欧美| 国产亚洲成人一区| 在线成人免费av| 国产欧美一区二区三区鸳鸯浴| 九九热精品在线观看| 欧美性一二三区| 无码h黄肉3d动漫在线观看| 久久综合88中文色鬼| 成人小电影网站| 成人在线视频网址| 性欧美69xoxoxoxo| 欧美视频免费播放| 成人永久免费视频| 日本激情视频一区二区三区| 精品久久久久久国产91| 国产wwwxxx| 最新亚洲国产精品| 精品91久久| 国产午夜精品在线| 在线成人激情| 亚洲综合婷婷久久| 国产亚洲午夜高清国产拍精品| 国产亚洲欧美精品久久久久久| 欧美高清视频不卡网| 国产中文字幕在线播放| 久久噜噜噜精品国产亚洲综合| 国产精品igao视频网网址不卡日韩| 日产精品高清视频免费| 噜噜噜91成人网| 中国一级特黄录像播放| 一区二区免费看| 国产精品亚洲欧美在线播放| 在线视频国产日韩| 欧美片第一页| 日本不卡一区二区三区视频| 99精品国产99久久久久久福利| 激情小说欧美色图| 亚洲一区二区在线播放相泽| 国产美女精品视频国产| www国产精品视频| 久久天天久久| 亚洲免费精品视频| 蜜桃视频一区二区三区在线观看| 国产精品免费无码| 在线视频欧美区| 成人精品一区二区三区免费| 国产91在线播放九色快色| 免费一区二区| 日本女优爱爱视频| 欧美国产日韩a欧美在线观看| 波多野结衣电车| 中文字幕精品在线| 四虎国产精品免费久久5151| 亚洲资源在线网| 国产一区在线观看麻豆| www.毛片com| 精品久久一二三区| 国产一二三在线| 青青成人在线| 麻豆精品视频在线观看免费| 老司机成人免费视频| 日韩视频一区二区三区| 99久久精品免费看国产小宝寻花| 国产亚洲福利社区| 美女尤物久久精品| 香蕉久久久久久久| 欧美一区二区三区视频在线 | 日产午夜精品一线二线三线| www.com黄色片| 亚洲激情图片一区| 熟妇人妻中文av无码| 国产激情999| 亚洲成人tv| 亚洲中文字幕无码一区| 色婷婷久久久综合中文字幕| 午夜在线免费观看视频| 亚洲综合色av| 亚洲一区区二区| 综合 欧美 亚洲日本| 欧美不卡一二三| 欧美成人资源| 亚洲区成人777777精品| 91亚洲精品乱码久久久久久蜜桃| а中文在线天堂| 欧美成人激情在线| 亚洲性视频大全| 亚洲精品在线网址| 欧美日韩亚洲视频一区| 免费黄色在线观看| 精品国产日本| 蓝色福利精品导航| 天堂网av手机版| 色999日韩欧美国产| 超碰一区二区三区| wwww.国产| 午夜精品福利视频网站| av在线电影网| 精品国产乱码久久久久久久软件 | 成人在线精品视频| 在线亚洲成人| 亚洲二区在线播放| 亚洲人成网站999久久久综合| 清纯唯美激情亚洲| 波多野结衣天堂| 亚洲va中文字幕| 成人av福利|