日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

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

概述

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

為什么我們需要它?

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

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

如何使用?

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

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

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

排除/排除名稱:允許您排除指定的異常類。當您添加到列表中的任何錯誤被拋出時,重試機制將不會被激活。sbI28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

Backoff的示例:

  • 具有固定的增量值
Backoff(delay = 600000 ) // 每 10 分鐘
  • 具有指數(shù)價值
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小時。如果任何嘗試均順利完成,則試用將終止。sbI28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

DLT隊列處理

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

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

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

注意事項

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

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

讓我們用一個例子來解釋這種情況:當主主題在時間 t 處理時,一條消息出錯并被發(fā)送到重試主題。在時間 t + 1 時,另一條消息來到主主題并成功處理。讓我們在重試主題中的消息在時間 t + 2 時被成功處理。在這種情況下,第一條傳入消息將在第二條消息之后處理。如果訂購對您很重要,我建議您在消息處理過程中進行必要的檢查。sbI28資訊網(wǎng)——每日最新資訊28at.com

另一個缺點是消息雙重處理的風險。您可以通過考慮這種可能性來進行改進。sbI28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • K8S | Service服務(wù)發(fā)現(xiàn)

    一、背景在微服務(wù)架構(gòu)中,這里以開發(fā)環(huán)境「Dev」為基礎(chǔ)來描述,在K8S集群中通常會開放:路由網(wǎng)關(guān)、注冊中心、配置中心等相關(guān)服務(wù),可以被集群外部訪問;圖片對于測試「Tes」環(huán)境或者
  • 一年經(jīng)驗在二線城市面試后端的經(jīng)驗分享

    忠告這篇文章只適合2年內(nèi)工作經(jīng)驗、甚至沒有工作經(jīng)驗的朋友閱讀。如果你是2年以上工作經(jīng)驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內(nèi)容來自 「升職加薪」星球星友 的投稿,坐
  • 不容錯過的MSBuild技巧,必備用法詳解和實踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構(gòu)建引擎,用于在.NET Framework和.NET Core應(yīng)用程序中自動化構(gòu)建過程。它是Visual Studio的構(gòu)建引擎,可在命令行或其他構(gòu)建工具中使用
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設(shè)備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發(fā)生
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據(jù)盒馬官微消息,盒馬計劃今年開放生鮮供應(yīng)鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經(jīng)與
  • 超閉合精工鉸鏈 徹底消滅縫隙 三星Galaxy Z Flip5與Galaxy Z Fold5發(fā)布

    2023年7月26日,三星電子正式發(fā)布了Galaxy Z Flip5與Galaxy Z Fold5。三星新一代折疊屏手機采用超閉合精工鉸鏈,讓折疊后的縫隙不再可見。同時,配合處
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發(fā)布的朋友圈
Top 主站蜘蛛池模板: 栾城县| 清丰县| 陵水| 鹤岗市| 东方市| 平谷区| 新河县| 长沙县| 雷州市| 洛阳市| 高州市| 比如县| 什邡市| 汉源县| 东兰县| 通化市| 连州市| 江阴市| 义乌市| 图木舒克市| 富裕县| 邻水| 北安市| 日照市| 普兰县| 湾仔区| 南京市| 怀仁县| 尤溪县| 哈密市| 海盐县| 汽车| 深州市| 全州县| 虎林市| 安新县| 新龙县| 永修县| 扶余县| 安宁市| 贵州省|