AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Spring實(shí)現(xiàn)Kafka重試Topic,真的太香了

來(lái)源: 責(zé)編: 時(shí)間:2024-01-08 09:17:11 207觀看
導(dǎo)讀概述Kafka的強(qiáng)大功能之一是每個(gè)分區(qū)都有一個(gè)Consumer的偏移值。該偏移值是消費(fèi)者將讀取的下一條消息的值。可以自動(dòng)或手動(dòng)增加該值。如果我們由于錯(cuò)誤而無(wú)法處理消息并想重試,我們可以選擇手動(dòng)管理,并在成功的情況下增

概述

Kafka的強(qiáng)大功能之一是每個(gè)分區(qū)都有一個(gè)Consumer的偏移值。該偏移值是消費(fèi)者將讀取的下一條消息的值。可以自動(dòng)或手動(dòng)增加該值。如果我們由于錯(cuò)誤而無(wú)法處理消息并想重試,我們可以選擇手動(dòng)管理,并在成功的情況下增加偏移量。但是,這會(huì)暫時(shí)阻止隊(duì)列消息的處理。我們可以選擇異步方法。esW28資訊網(wǎng)——每日最新資訊28at.com

為什么我們需要它?

如果發(fā)生錯(cuò)誤,而不是停止隊(duì)列消息的處理;我們可以將錯(cuò)誤消息轉(zhuǎn)移到不同的主題并再次處理。esW28資訊網(wǎng)——每日最新資訊28at.com

如果在處理 Kafka 消息時(shí)出現(xiàn)錯(cuò)誤,可以使用 RetryableTopic 注解以一定的時(shí)間間隔和一定的次數(shù)再次處理消息。如果完成嘗試次數(shù)后錯(cuò)誤仍然存在,則消息將發(fā)送到 DLT 隊(duì)列。esW28資訊網(wǎng)——每日最新資訊28at.com

如何使用?

我們首先回顧一下RetryableTopic注解可以取的一些值,以便您可以做出最適合您的設(shè)置:esW28資訊網(wǎng)——每日最新資訊28at.com

attempts:嘗試處理消息的次數(shù)。它的默認(rèn)值為 3。如果完成所有嘗試后仍然收到錯(cuò)誤,則消息將發(fā)送到 DLT 隊(duì)列。esW28資訊網(wǎng)——每日最新資訊28at.com

backoff:用于確定處理消息的時(shí)間間隔。從 Backoff 類(lèi)獲取一個(gè)值。您可以在下面找到退避的詳細(xì)示例。esW28資訊網(wǎng)——每日最新資訊28at.com

排除/排除名稱(chēng):允許您排除指定的異常類(lèi)。當(dāng)您添加到列表中的任何錯(cuò)誤被拋出時(shí),重試機(jī)制將不會(huì)被激活。esW28資訊網(wǎng)——每日最新資訊28at.com

include / includeNames:僅當(dāng)拋出指定的異常時(shí)才會(huì)激活重試機(jī)制。esW28資訊網(wǎng)——每日最新資訊28at.com

kafkaTemplate:雖然您可以給出現(xiàn)有 kafkaTemplate bean 的名稱(chēng),但您也可以為特定于重試的 Kafka 模板定義不同的 bean。esW28資訊網(wǎng)——每日最新資訊28at.com

autoCreateTopics:決定是否自動(dòng)創(chuàng)建Retry和DLT主題。esW28資訊網(wǎng)——每日最新資訊28at.com

retryTopicSuffix / dltTopicSuffix:用于確定要添加到自動(dòng)創(chuàng)建的主題末尾的后綴。esW28資訊網(wǎng)——每日最新資訊28at.com

dltStrategy:如果不需要DLT,可以定義為NO_DLT。esW28資訊網(wǎng)——每日最新資訊28at.com

SameIntervalTopicReuseStrategy/fixedDelayTopicStrategy(3.0.4之前):用于確定要?jiǎng)?chuàng)建的重試主題策略。創(chuàng)建 (SINGLE_TOPIC) 或盡可能多的嘗試值 (MULTIPLE_TOPICS) 重試主題。esW28資訊網(wǎng)——每日最新資訊28at.com

Backoff的示例:

  • 具有固定的增量值
Backoff(delay = 600000 ) // 每 10 分鐘
  • 具有指數(shù)價(jià)值
Backoff(delay = 60000 , multiplier = 2 ) // 1、2、4、8... 分鐘后重復(fù)。
  • 用占位符定義值
Backoff(delayExpression = "${delay}", multiplierExpression = "${multiplier}")

@RetryableTopic 示例:

@RetryableTopic(     backoff = @Backoff(delay = 300000),     attempts = 12,     sameIntervalTopicReuseStrategy =          SameIntervalTopicReuseStrategy.SINGLE_TOPIC,     kafkaTemplate = "kafkaRetryableTopicTemplate",     exclude = { SerializationException.class,                  DeserializationException.class,                  NullPointerException.class                } ) @KafkaListener(topics = "my-topic") public void processMessage(RetryableDto retryableDto) {     log.info("Retrying process RetryableDto : {}", retryableDto);     // process message }

在上面的例子中,消息將每5分鐘重新處理一次,總共12次,即1小時(shí)。如果任何嘗試均順利完成,則試用將終止。esW28資訊網(wǎng)——每日最新資訊28at.com

由于定義了 SINGLE_TOPIC,因此將創(chuàng)建單個(gè)主題以進(jìn)行重試。如果沒(méi)有進(jìn)行此定義,則會(huì)創(chuàng)建 12 個(gè)重試主題。esW28資訊網(wǎng)——每日最新資訊28at.com

如果拋出了排除中定義的任何錯(cuò)誤,則不會(huì)執(zhí)行重做。esW28資訊網(wǎng)——每日最新資訊28at.com

如果需要,您可以編寫(xiě)自己的 RetryableException 并在包含中定義此值,以便僅在引發(fā)此錯(cuò)誤時(shí)才重試。esW28資訊網(wǎng)——每日最新資訊28at.com

DLT隊(duì)列處理

如果完成了定義的嘗試次數(shù)并且繼續(xù)收到錯(cuò)誤,則消息將發(fā)送到 DLT 隊(duì)列。如果要處理這些消息,可以使用DltHandler注解。esW28資訊網(wǎng)——每日最新資訊28at.com

用法示例:esW28資訊網(wǎng)——每日最新資訊28at.com

@DltHandler  public  void  handleDltMessage (RetryableDto retryableDto) {      log.error("DLT處理程序消息:{}", retryableDto); }

注意事項(xiàng)

雖然使用 RetryableTopic 的異步處理優(yōu)勢(shì)為我們帶來(lái)了性能提升,但這種使用也有一些缺點(diǎn)。esW28資訊網(wǎng)——每日最新資訊28at.com

使用RetryableTopic可能會(huì)破壞消息的處理順序。esW28資訊網(wǎng)——每日最新資訊28at.com

讓我們用一個(gè)例子來(lái)解釋這種情況:當(dāng)主主題在時(shí)間 t 處理時(shí),一條消息出錯(cuò)并被發(fā)送到重試主題。在時(shí)間 t + 1 時(shí),另一條消息來(lái)到主主題并成功處理。讓我們?cè)谥卦囍黝}中的消息在時(shí)間 t + 2 時(shí)被成功處理。在這種情況下,第一條傳入消息將在第二條消息之后處理。如果訂購(gòu)對(duì)您很重要,我建議您在消息處理過(guò)程中進(jìn)行必要的檢查。esW28資訊網(wǎng)——每日最新資訊28at.com

另一個(gè)缺點(diǎn)是消息雙重處理的風(fēng)險(xiǎn)。您可以通過(guò)考慮這種可能性來(lái)進(jìn)行改進(jìn)。esW28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-57904-0.htmlSpring實(shí)現(xiàn)Kafka重試Topic,真的太香了

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 應(yīng)對(duì)ERP實(shí)施后面臨的挑戰(zhàn)的十個(gè)步驟

下一篇: 六種最關(guān)鍵的架構(gòu)模式

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • K60至尊版剛預(yù)熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競(jìng)品的一加也坐不住了。一加中國(guó)區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時(shí)間業(yè)務(wù)團(tuán)隊(duì)偶爾會(huì)碰到一些 Pulsar 使用的問(wèn)題,比如消息阻塞不消費(fèi)了、生產(chǎn)者消息發(fā)送緩慢等各種問(wèn)題。雖然我們有個(gè)監(jiān)控頁(yè)面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • 三言?xún)烧Z(yǔ)說(shuō)透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術(shù),可以幫助我們寫(xiě)出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實(shí)現(xiàn)原理和應(yīng)用
  • “又被陳思誠(chéng)騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國(guó)產(chǎn)懸疑電影,成了陳思誠(chéng)的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠(chéng)再度風(fēng)頭無(wú)兩。你可以說(shuō)陳思誠(chéng)的
  • 微博大門(mén)常打開(kāi),迎接海外畫(huà)師漂洋東渡

    作者:互聯(lián)網(wǎng)那些事“起猛了,我能看得懂日語(yǔ)了”。“為什么日本人說(shuō)話我能聽(tīng)懂?”“中文不像中文,日語(yǔ)不像日語(yǔ),但是我竟然看懂了”…&hell
  • 華為發(fā)布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開(kāi)發(fā)者大會(huì)2023(HDC.Together)大會(huì)上,HarmonyOS 4正式發(fā)布。自2019年發(fā)布以來(lái),HarmonyOS一直以用戶(hù)為中心,經(jīng)歷四年多的發(fā)展HarmonyOS已
  • 三星Galaxy Z Fold5今日亮相:厚度縮減但仍略顯厚重

    據(jù)官方此前宣布,三星將于7月26日也就是今天在韓國(guó)首爾舉辦Unpacked活動(dòng),屆時(shí)將帶來(lái)帶來(lái)包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • OPPO K11采用全方位護(hù)眼屏:三大護(hù)眼能力減輕視覺(jué)疲勞

    日前OPPO官方宣布,全新的OPPO K11將于7月25日正式發(fā)布,將主打旗艦影像,和同檔位競(jìng)品相比,其最大的賣(mài)點(diǎn)就是將配備索尼IMX890主攝,堪稱(chēng)是2000檔位影像表
  • 由于成本持續(xù)增加,筆記本產(chǎn)品價(jià)格預(yù)計(jì)將明顯上漲

    根據(jù)知情人士透露,由于材料、物流等成本持續(xù)增加,筆記本產(chǎn)品價(jià)格預(yù)計(jì)將在2021年下半年有明顯上漲。進(jìn)入6月下旬以來(lái),全球半導(dǎo)體芯片缺貨情況加劇,顯卡、處理器
Top