日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Kafka-AckMode最佳实践

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Kafka-AckMode最佳实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 概述
  • AckMode源碼解讀
    • 自動提交設置
    • 手工提交設置
  • 最佳實踐


概述

Apache Kafka-消息丟失分析 及 ACK機制探究


我們這里配了個manual, 為啥子嘛


AckMode源碼解讀

我們來看下 Spring Kafka封裝的ACK

ContainerProperties#AckMode

/*** The offset commit behavior enumeration.*/public enum AckMode {/*** Commit after each record is processed by the listener.*/RECORD,/*** Commit whatever has already been processed before the next poll.*/BATCH,/*** Commit pending updates after* {@link ContainerProperties#setAckTime(long) ackTime} has elapsed.*/TIME,/*** Commit pending updates after* {@link ContainerProperties#setAckCount(int) ackCount} has been* exceeded.*/COUNT,/*** Commit pending updates after* {@link ContainerProperties#setAckCount(int) ackCount} has been* exceeded or after {@link ContainerProperties#setAckTime(long)* ackTime} has elapsed.*/COUNT_TIME,/*** User takes responsibility for acks using an* {@link AcknowledgingMessageListener}.*/MANUAL,/*** User takes responsibility for acks using an* {@link AcknowledgingMessageListener}. The consumer* immediately processes the commit.*/MANUAL_IMMEDIATE,}

自動提交設置

  • RECORD

每條消息被消費完成后,自動提交

  • BATCH

每一次消息被消費完成后,在下次拉取消息之前,自動提交 (默認模式)

  • TIME :

達到一定時間間隔后,自動提交, 并不是一到就立馬提交,如果此時正在消費某一條消息,需要等這條消息被消費完成,才能提交消費進度

  • COUNT

消費成功的消息數到達一定數量后,自動提交 ,它并不是一到就立馬提交,如果此時正在消費某一條消息,需要等這條消息被消費完成,才能提交消費進度

  • COUNT_TIME

TIME 和 COUNT 的結合體,滿足任一都會自動提交。


手工提交設置

  • MANUAL

調用時,先標記提交消費進度。等到當前消息被消費完成,然后在提交消費進度。

  • MANUAL_IMMEDIATE

調用時,立即提交消費進度。


最佳實踐

那應該怎么配置呢

  • 配置 spring.kafka.consumer.enable-auto-commit為true, spring.kafka.consumer.auto-commit-interval 設置自動提交的頻率 , 舉個例子 自動提交,批量拉去了一波,還沒消費完,你就提交了,這給時候如果消費者掛了,消息丟失。。。

  • 配置 spring.kafka.consumer.enable-auto-commit為false , spring.kafka.listener.ack-mode 設置具體模式,結合具體情況。 有可能重復消費,注意冪等性的判斷

  • 另外,spring.kafka.listener.ack-time 和 spring.kafka.listener.ack-count 可以設置自動提交的時間間隔和消息條數

總而言之,沒有標準答案,需要進行trade off ,權衡一下

嗨 ,你這不是誒說么。。。。


總結

以上是生活随笔為你收集整理的Apache Kafka-AckMode最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。