RocketMQ應(yīng)用——消息消費(fèi)重試機(jī)制

順序消息的消費(fèi)重試

對(duì)于順序消息妆艘,當(dāng)Consumer消費(fèi)信息失敗后,為了保證消息的順序性看幼,其會(huì)自動(dòng)不斷地進(jìn)行消息重試批旺,知道消費(fèi)成功。消費(fèi)重試默認(rèn)間隔時(shí)間為1000毫秒诵姜。重試期間應(yīng)用會(huì)出現(xiàn)消息消費(fèi)被阻塞的情況汽煮。

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

由于對(duì)順序消息的重試是無休止的,不間斷的宵凌,直至消費(fèi)成功鞋囊,所以,對(duì)于順序消息的消費(fèi)瞎惫,務(wù)必要保證應(yīng)用能夠及時(shí)監(jiān)控并處理消費(fèi)失敗的情況溜腐,避免消費(fèi)被永久性阻塞
注意:順序消息沒有發(fā)送失敗重試機(jī)制,但具有消費(fèi)失敗重試機(jī)制

無序消息的消費(fèi)重試

對(duì)于無序消息(普通消息瓜喇、延時(shí)消息挺益、事務(wù)消息),當(dāng)Consumer消費(fèi)消息失敗時(shí)乘寒,可以通過設(shè)置返回狀態(tài)達(dá)到消息重試的效果望众。不過需要注意,無序消息的重試只對(duì)集群消費(fèi)方式生效,廣播消費(fèi)方式不提供失敗重試機(jī)制黍檩。即對(duì)于廣播消費(fèi)叉袍,消費(fèi)失敗后,失敗消息不再重試刽酱,繼續(xù)消費(fèi)后續(xù)消息

消費(fèi)重試次數(shù)與間隔

對(duì)于無序消息集群消費(fèi)下的重試消費(fèi)喳逛,每條消息默認(rèn)最多重試16次,但每次重試的間隔時(shí)間時(shí)不同的棵里,會(huì)逐漸編程润文。每次重試的間隔時(shí)間如下:


image.png

若一條消息在一直消費(fèi)失敗的前提下,將會(huì)在正常消費(fèi)后的第4小時(shí)46分后進(jìn)行第16次重試殿怜。若仍然失敗典蝌,則將消息投遞到死信隊(duì)列

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

對(duì)于修改過的重試次數(shù),將按照一下策略執(zhí)行

  • 若修改值小于16头谜,則按照指定間隔進(jìn)行充實(shí)
  • 若修改值大于16骏掀,則超過16次的重試時(shí)間間隔均為2小時(shí)

對(duì)于Consumer Group,若僅修改了一個(gè)Consumer的消費(fèi)重試次數(shù)柱告,則會(huì)應(yīng)用到該Group中所有其他Consumer實(shí)例截驮。若出現(xiàn)多個(gè)Consumer均做了修改的情況,則采用覆蓋方式生效际度。即最后被修改的值會(huì)覆蓋前面設(shè)置的值

重試隊(duì)列

對(duì)于需要重試消費(fèi)的消息葵袭,并不是Consumer在等待了指定時(shí)長(zhǎng)后再去拉取原來的消息進(jìn)行消費(fèi),而是將這些需要重試消費(fèi)的消息放入了一個(gè)特殊的Topic隊(duì)列中乖菱,而后進(jìn)行再次消費(fèi)坡锡。這個(gè)特殊的隊(duì)列就是重試隊(duì)列

當(dāng)出現(xiàn)需要進(jìn)行重試消費(fèi)的消息時(shí),Broker會(huì)為每個(gè)消費(fèi)組都設(shè)置一個(gè)Topic名稱為%RETRY%consumerGroup@consumerGroup的重試隊(duì)列

1窒所、 這個(gè)重試隊(duì)列時(shí)針對(duì)消息才組的鹉勒,而不是針對(duì)每個(gè)Topic設(shè)置的(一個(gè)Topic的消息可以讓多個(gè)消費(fèi)者組進(jìn)行消費(fèi),所以會(huì)為這些消費(fèi)者組各創(chuàng)建一個(gè)重試隊(duì)列)
2吵取、 只有當(dāng)出現(xiàn)需要進(jìn)行重試消費(fèi)的消息時(shí)禽额,才會(huì)為該消費(fèi)者組創(chuàng)建重試隊(duì)列

注意:消費(fèi)重試的時(shí)間間隔與延時(shí)消費(fèi)的延時(shí)等級(jí)十分相似,除了沒有延時(shí)等級(jí)的前兩個(gè)時(shí)間外海渊,其他的時(shí)間都是相同的

Broker對(duì)于重試消息的處理是通過延時(shí)消息實(shí)現(xiàn)的。先將消息保存到SCHEDULE_TOPIC_XXXX延遲隊(duì)列中哲鸳,延遲時(shí)間到后臣疑,會(huì)將消息投遞到%RETRY%consumerGroup@consumerGroup重試隊(duì)列中

消費(fèi)重試配置方式

image.png

集群消費(fèi)方式下,消息消費(fèi)失敗后若希望消費(fèi)重試徙菠,則需要在消息監(jiān)聽器接口中實(shí)現(xiàn)明確進(jìn)行如下三種方式之一的配置

  • 返回ConsumeConcurrentlyStatus.RECONSUME_LATER(推薦)
  • 返回null
  • 拋出異常

消費(fèi)不重試配置方式

image.png

集群消費(fèi)方式下讯沈,消息消費(fèi)失敗后若不希望消費(fèi)重試,則在捕獲到異常后同樣也返回與消費(fèi)成功后的相同結(jié)果,即ConsumeConcurrentlyStatus.RECONSUME_SUCCESS缺狠,則不進(jìn)行消費(fèi)重試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末问慎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挤茄,更是在濱河造成了極大的恐慌如叼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穷劈,死亡現(xiàn)場(chǎng)離奇詭異笼恰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)歇终,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門社证,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人评凝,你說我怎么就攤上這事追葡。” “怎么了奕短?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)篡诽。 經(jīng)常有香客問我崖飘,道長(zhǎng)杈女,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任达椰,我火速辦了婚禮翰蠢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啰劲。我一直安慰自己,他們只是感情好蝇裤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栓辜,像睡著了一般恋拍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藕甩,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼僵娃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛默怨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘩扼,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼垃僚,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼集绰!你這毒婦竟也來了谆棺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤碍岔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蔼啦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仰猖,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鸵赫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辩棒。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膨疏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出佃却,到底是詐尸還是另有隱情者吁,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布砚偶,位于F島的核電站洒闸,受9級(jí)特大地震影響染坯,放射性物質(zhì)發(fā)生泄漏丘逸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一仲锄、第九天 我趴在偏房一處隱蔽的房頂上張望湃鹊。 院中可真熱鬧儒喊,春花似錦币呵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扛拨。三九已至举塔,卻和暖如春绑警,著一層夾襖步出監(jiān)牢的瞬間啤贩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工章郁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暖庄。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓楼肪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親春叫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泣港,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容