在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring Kafka的各種用法

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-09-25 17:04 ? 次閱讀

最近業務上用到了Spring Kafka,所以系統性的探索了下Spring Kafka的各種用法,發現了很多實用的特性,下面介紹下Spring Kafka的消息重試機制。

0. 前言

原生 Kafka 是不支持消息重試的。但是 Spring Kafka 2.7+ 封裝了 Retry Topic 這個功能。

1. @RetryableTopic

使用注解的方式啟用 Retry Topic,在 @KafkaListener 方法上添加 @RetryableTopic 即可:

@Slf4j
@Component
public class DemoConsumer {
    @RetryableTopic
    @KafkaListener(topics = "topic1", groupId = "group1")
    public void onMsg(ConsumerRecord< String, String > record) {
        log.info("topic: {}", record.topic());
        throw new RuntimeException("kafka exception");
    }

}

這樣就開啟了 Spring Kafka 的消息重試機制:默認重試 3 次,間隔為 1 秒。

我們在方法里模擬了拋出異常,運行后可以發現打印了 3 條日志,間隔時間大約為 1 秒,重試的topic為原topic加上后綴“-retry”

2022-11-12 12:14:10.230  INFO 1023 --- [ner#3-dlt-0-C-1] c.b.b.demo.retrytopic.KafkaListener: topic: topic1
2022-11-12 12:14:11.315  INFO 1023 --- [ner#3-dlt-0-C-1] c.b.b.demo.retrytopic.KafkaListener: topic: topic1-retry-0  
2022-11-12 12:14:12.310  INFO 1023 --- [ner#3-dlt-0-C-1] c.b.b.demo.retrytopic.KafkaListener: topic: topic1-retry-1

2. DLT死信隊列

如果 3 次重試后依舊失敗,會將消息發送到 DLT,

默認情況,消息被發送到死信隊列后,會輸出一條日志。

2022-11-12 12:14:13.324  INFO 1023 --- [ner#3-dlt-0-C-1] o.s.k.retrytopic.RetryTopicConfigurer    : Received message in dlt listener: topic1-dlt@233

DLT的topic為原topic加上后綴“-dlt”

我們可以使用@DltHandler注解來定義進入死信隊列后的操作:

@DltHandler
public void dltHandler(ConsumerRecord< String, String > record) {
    log.info("topic:{}, key:{}, value:{}", record.topic(), record.key(), record.value());
}

3. 自定義@RetryableTopic

可以自定義重試次數、延遲時間、topic命名策略等等,支持使用 Spring EL 表達式讀取配置。

@Slf4j
@Component
public class DemoConsumer {
    @RetryableTopic(
            attempts = "4",
            backoff = @Backoff(delay = "5000", multiplier = "2"),
            fixedDelayTopicStrategy = FixedDelayStrategy.SINGLE_TOPIC
    )
    @KafkaListener(topics = "topic2", groupId = "group1")
    public void onMsg2(ConsumerRecord< String, String > record) {
        log.info("topic: {}", record.topic());
        throw new RuntimeException("kafka exception");
    }

}

注解屬性說明:

attempts :重試次數,默認為3。

@Backoff delay :消費延遲時間,單位為毫秒。

@Backoff multiplier :延遲時間系數,此例中 attempts = 4, delay = 5000, multiplier = 2 ,則間隔時間依次為5s、10s、20s、40s,最大延遲時間受 maxDelay 限制。

fixedDelayTopicStrategy :可選策略包括:SINGLE_TOPIC 、MULTIPLE_TOPICS

4. 配置類

以上介紹的是注解的方式,只對注解下的方法有效。如果想讓多個方法都用相同的消息重試配置,那么可以使用配置類方式:

@Bean
public RetryTopicConfiguration retryTopic(KafkaTemplate< String, String > template) {
    return RetryTopicConfigurationBuilder
            .newInstance()
            .maxAttempts(4)
            .fixedBackOff(5000)
            .includeTopic("topic1")
            .create(template);
}

小結

以上就是Spring Kafka消息重試機制的簡單應用~希望能夠幫助那些正在使用Spring Kafka或即將使用的人少走一些彎路、少踩一點坑。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14341
  • 日志
    +關注

    關注

    0

    文章

    138

    瀏覽量

    10641
  • 機制
    +關注

    關注

    0

    文章

    24

    瀏覽量

    9782
  • DLT
    DLT
    +關注

    關注

    0

    文章

    16

    瀏覽量

    5298
收藏 人收藏

    評論

    相關推薦

    Spring Boot Starter需要些什么

    pulsar-spring-boot-starter是非常有必要的,在此之前,我們先看看一個starter需要些什么。 Spring Boot Starter spring-boot的強大之處在于其提供的大量
    的頭像 發表于 09-25 11:35 ?763次閱讀
    <b class='flag-5'>Spring</b> Boot Starter需要些什么

    java spring教程

    java spring教程理解Spring 實現原理掌握Spring IOC,AOP掌握Spring的基礎配置和用法熟練使用SSH開發項目
    發表于 09-11 11:09

    什么是java spring

    、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。Spring帶給我們什么◆方便解耦,簡化開發      
    發表于 09-11 11:16

    基于發布與訂閱的消息系統Kafka

    Kafka權威指南》——初識 Kafka
    發表于 03-05 13:46

    Kafka基礎入門文檔

    kafka系統入門教程(原理、配置、集群搭建、Java應用、Kafka-manager)
    發表于 03-12 07:22

    Spring筆記分享

    Spring實現了使用簡單的組件配置組合成一個復雜的應用。在 Spring 中可以使用XML和Java注解組合這些對象。6) 一站式:在IOC和AOP的基礎上可以整合各種企業應用的開源框架和優秀的第三方類
    發表于 11-04 07:51

    Kafka集群環境的搭建

    1、環境版本版本:kafka2.11,zookeeper3.4注意:這里zookeeper3.4也是基于集群模式部署。2、解壓重命名tar -zxvf
    發表于 01-05 17:55

    spring定時器用法詳解

    Spring是于2003年興起的一個輕量級的Java開發框架,由RodJohnson創建。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。下文為大家介紹spring定時器
    發表于 01-28 10:16 ?5706次閱讀
    <b class='flag-5'>spring</b>定時器<b class='flag-5'>用法</b>詳解

    Kafka的概念及Kafka的宕機

    問題要從一次Kafka的宕機開始說起。 筆者所在的是一家金融科技公司,但公司內部并沒有采用在金融支付領域更為流行的 RabbitMQ ,而是采用了設計之初就為日志處理而生的 Kafka ,所以我一直
    的頭像 發表于 08-27 11:21 ?2103次閱讀
    <b class='flag-5'>Kafka</b>的概念及<b class='flag-5'>Kafka</b>的宕機

    Spring Boot實現各種參數校驗

    之前也寫過一篇關于Spring Validation使用的文章,不過自我感覺還是浮于表面,本次打算徹底搞懂Spring Validation。本文會詳細介紹Spring Validation
    的頭像 發表于 08-14 15:54 ?963次閱讀

    Spring Validation的使用

    之前也寫過一篇關于Spring Validation使用的文章,不過自我感覺還是浮于表面,本次打算徹底搞懂Spring Validation。本文會詳細介紹Spring Validation
    的頭像 發表于 09-08 10:31 ?890次閱讀

    Kafka 的簡介

    ? 1 kafka簡介 2 為什么要用消息系統 3 kafka基礎知識 4 kafka集群架構 5 總結 ? 1 kafka簡介 其主要設計目標如下: 以時間復雜度為O(1)的方式提供
    的頭像 發表于 07-03 11:10 ?609次閱讀
    <b class='flag-5'>Kafka</b> 的簡介

    監控Kafka集群的常用的方法和工具介紹

    Control等工具連接到Kafka Broker的JMX端口,并監控各種關鍵指標,如吞吐量、延遲、磁盤使用率、網絡連接數等。
    發表于 08-30 10:05 ?2123次閱讀
    監控<b class='flag-5'>Kafka</b>集群的常用的方法和工具介紹

    kafka client在 spring如何實現

    認識了 spring-boot-starter ,今天不妨來看下如何寫一個 pulsar-spring-boot-starter 模塊。 目標 寫一個完整的類似 kafka-spring-boot-st
    的頭像 發表于 09-25 11:21 ?490次閱讀
    <b class='flag-5'>kafka</b> client在 <b class='flag-5'>spring</b>如何實現

    Kafka架構技術:Kafka的架構和客戶端API設計

    Kafka 給自己的定位是事件流平臺(event stream platform)。因此在消息隊列中經常使用的 "消息"一詞,在 Kafka 中被稱為 "事件"。
    的頭像 發表于 10-10 15:41 ?2375次閱讀
    <b class='flag-5'>Kafka</b>架構技術:<b class='flag-5'>Kafka</b>的架構和客戶端API設計
    主站蜘蛛池模板: a毛片网站| 99精品视频在线播放2| 午夜国产大片免费观看| 天天操夜夜摸| 国产精品资源在线观看| jizz性欧美12| 男人j进入女人j在线视频| 亚洲成人网在线观看| 99久久精品国产免费| 四虎最新地址| 久久婷婷六月| 在线观看s色| 美女被玩| 久久国产精品岛国搬运工| 欧美性满足hd1819| 69国产成人综合久久精品| 免费看黄的视频软件| 爱爱免费视频网站| 色综合天天综合网站中国| 人人揉揉香蕉大青草| www.亚洲免费| 好爽毛片一区二区三区四| 天天看天天爽| 久久久黄色大片| 淫欲高三| 美女涩涩网站| 天天做天天添天天谢| 1024手机在线观看视频| aaaaa国产毛片| 国内在线观看精品免费视频| 天天射天天舔| 国产2021成人精品| 免费一级欧美片在线观免看| 欧美精品影院| 欧美不卡视频| 日本h视频在线| aaaa大片| 轻点灬大ji巴太粗太大了小说 | 国产亚洲人成网站观看| 天天操天天射天天色| 99热久久精品最新|