Java Apache Kafka Producer 元数据更新器和重试逻辑

2023-12-06

我正在使用 Spring for Apache Kafka,并创建了一个服务,该服务通过 Spring 的 KafkaTemplate 使用 Kafka Producer (org.apache.kafka.clients. Producer) 将消息发送到某个主题。在目标 Kafka 集群上,我禁用了自动主题创建。使用此处列出的生产者配置的组合https://kafka.apache.org/documentation/# Producerconfigs我成功地控制了请求重试的次数、重试之间的时间等。

如果我提供的主题不存在,则请求会在我期望的时间超时(达到最大块时间)。但是,超时后,我继续按照设置的时间间隔获取日志条目(例如下面的条目)重试.退避.ms until 300000 毫秒/5 分钟已达到。

我无法确定可以更改生产者或代理上的哪个配置属性来阻止生产者检查 5 分钟以查看主题是否已创建。

有人可以指出正确的设置,让我可以减少这种情况,或者在请求超时后停止检查吗?

日志条目示例:

WARN  [kafka-producer-network-thread | producer-1] org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater: [Producer clientId=producer-1] Error while fetching metadata with correlation id 9 : {<specified_topic>=UNKNOWN_TOPIC_OR_PARTITION}

使用的生产者配置:

  • 交付.超时.ms = 5000
  • 延迟时间 = 1000
  • 最大块毫秒 = 8000
  • 请求超时.ms=4000
  • 最大重试次数 = 0
  • 重试.backoff.ms = 2000

Kafka Producer 在第一次之前检索并缓存主题/分区元数据send。然后,它会定期尝试刷新此元数据,每次metadata.max.age.ms(默认=5分钟)对于“好”和每个retry.backoff.ms对于“无效”主题。这些元数据刷新尝试是您在日志中观察到的内容。

为了防止缓存不受控制地增长,未使用的主题会在一定时间后根据这些从缓存中删除来源评论。目前,该有效期被硬编码在ProducerMetadata.java为5分钟。

  public class ProducerMetadata extends Metadata {
      private static final long TOPIC_EXPIRY_NEEDS_UPDATE = -1L;
      static final long TOPIC_EXPIRY_MS = 5 * 60 * 1000;
        ...

您实际上可以通过将生产者日志级别设置为来观察所有这些活动DEBUG.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Apache Kafka Producer 元数据更新器和重试逻辑 的相关文章

随机推荐

  • “OutOfMemoryError:超出GC开销限制”:用java解析大json文件

    我尝试用Java解析大型json文件 超过600Mo 我的json文件看起来像这样 0 link id 2381317 overview mjklmklmklmklmk founded 2015 followers 42 type Game
  • Xamarin Forms Labs Camera - 永久保存图像并调用它们

    我让相机功能正常工作 它也像我要求的那样在页面上显示图像 但是有没有办法将图像永久保存在手机或其他地方然后调用呢 太感谢了 这是一些适合我的代码 IFileAccess是我的包装纸吗System IO File文件打开 写入 检查是否存在等
  • opencv中如何将3个矩阵合并为1个?

    我有三个矩阵 每个矩阵的大小4x1 我想将所有这些矩阵复制到另一个大小的矩阵4x3并称之为R 有聪明的方法吗 您可以使用 hconcat 进行水平连接 您可以在每个矩阵中使用它 例如hconcat mat1 mat2 R 或直接将其应用于向
  • Xcode 中的“在多个设备上预览”选项

    我正在关注 YouTube 上的一些教程 在大多数教程中 他们使用 UIKit 故事板 框架 现在观看这些视频他们可以打开多个设备同时预览作品 见下图 我正在使用 Xcode 14 我正在搜索他们正在使用的 预览 选项或功能 但我根本找不到
  • 根据域名使 URL 唯一

    我有一个名为的 URL 列表网址列表 https target com first one https target com something first one http target com dir first summer http
  • 在嵌套数据框中,将信息从一个列表列传递到另一列中应用的函数

    我正在编写一份报告 必须将大量相似的数据框导出到 Word 中漂亮的表格中 我的目标是一次性实现这一目标 使用flextable生成表格和purrr tidyverse将所有格式化过程应用于嵌套数据框中的所有行 这就是我的数据框的样子 df
  • 如何使用 WebBrowser 控件填写 WebForm 并单击提交按钮?

    我怎样才能点击这个SUBMIT使用 WebBrowser 控件的按钮 我尝试过 For Each divSect As HtmlElement In WebBrowser1 Document GetElementsByTagName but
  • 禁用 UITableView 水平滚动

    我创建了一个UITableView有一个小框架 如 0 0 50 50 我想禁用水平滚动但保留垂直滚动 I set self table bounces NO 但 tableview 也不能垂直滚动 因此 动画并不是那么完美 那么有人有提示
  • 如何将 WPF 应用程序设为 30 天试用版,并使用产品密钥对其进行许可?

    我已经使用 C 在 WPF 中开发了一个应用程序 现在的问题是我希望我的应用程序作为许可版本 前 30 天它应该是免费的 即试用版 所以现在当它完成时 它应该弹出一个窗口 说试用版是完成激活它 如果用户单击 是 则会出现一个带有电子邮件 I
  • Java中如何访问内存位置?

    我们是否可以直接或间接访问Java中的内存位置 如果我们尝试打印一个对象 它将打印哈希码 hashcode是否间接表示内存位置 对于位于不同内存位置的两个对象 但它们的哈希码仍然可以不同 阿布舍克 我们是否可以访问 Java中的内存位置直接
  • 当参数满足时,OR 函数不返回“TRUE”

    我有一个很大的数据集 并且创建了许多规则 我想用它们来过滤掉一些不必要的数据点 这是一些数据的简化示例 A B C D 1 PIPPIP 0 0 411298 PIPPIP 2 PIPPIP 0 6 0 40924 PIPPIP 3 PIP
  • 如何检测iPhone是否连接到任何蓝牙设备?

    我在 iOS 7 中发现了这个新的 API NSArray retrieveConnectedPeripheralsWithServices NSArray serviceUUIDs NS AVAILABLE NA 7 0 因此很清楚 如果
  • 如何将快照侦听器正确添加到 Java 中的 Firebase Firestore 文档引用?

    我正在按照 Java Android 文档进行实时更新 但是出现错误 EventListener takes no type parameters 我删除了
  • 如何在Java中向后打印多个字符串

    我正在尝试获取一个充满字符串的文件 读取它 然后打印出一些内容 字符串 字符串向后 AND 大写 字符串长度 还有一些事情 但是我还没有达到这一点 并且不想要求任何人完全为我编写代码 经过一段时间的摸索之后 我几乎完成了它 我相信 除了一些
  • C# .NET 将 JPEG 图像转换为位图结构

    我有一个 JPEG 图像 实际上是数据库中的 BLOB 我想将其导入 转换为内存中的 位图 结构 原因是我使用的第三方库无法处理 JPEG 图像 并且我需要传递未压缩的位图 作为指针 到目前为止 我发现的只是在磁盘上的不同格式之间进行转换的
  • 为什么“use std::io”在这里还不够?

    我尝试编译以下程序 use std io fn main io stdout write b Please enter your name io stdout flush 不幸的是 编译器拒绝了 error no method named
  • SwiftUI 中的 PreferredScreenEdgesDeferringSystemGestures

    in UIKit有一个选项可以禁用 主页 系统从底部向上滑动 不是完全禁用 但滑动会忽略第一次 并且如果用户确实想要的话 将强制用户重复它 setNeedsUpdateOfScreenEdgesDeferringSystemGestures
  • 如何在 UWP 中为 NumberBox 应用 PercentFormatter?

    我想在最后添加百分比 0 100 它正确显示 但它在末尾添加更多零 如下所示 double number 75 NumberBoxnumberBox new NumberBox PercentFormatter percentFormatt
  • 文件比较和突出显示 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想比较两个文本文件并突出显示差异 你们中的任何一个人都可以帮助我通过 Java 程序完成这个任务吗 提前致谢 The 谷歌差异匹配路径库似乎提供了您需要的功能 这是一个demo它在
  • Java Apache Kafka Producer 元数据更新器和重试逻辑

    我正在使用 Spring for Apache Kafka 并创建了一个服务 该服务通过 Spring 的 KafkaTemplate 使用 Kafka Producer org apache kafka clients Producer