Kafka 生产者无法发送消息,出现 NOT_LEADER_FOR_PARTITION 异常

2023-11-24

我们使用 spring-cloud-stream-binder-kafka (3.0.3.RELEASE) 将消息发送到我们的 Kafka 集群 (2.4.1)。生产者线程之一时不时地收到 NOT_LEADER_FOR_PARTITION 异常,甚至超过重试次数(当前设置为 12,由依赖项 spring-retry 激活)。我们限制了重试,因为我们每秒发送大约 1k 消息(每个生产者实例)并且担心缓冲区的大小。 这样我们就会经常丢失消息,这对下游消费者不利,因为我们无法简单地重现传入流量。

错误信息是


[Producer clientId=producer-5] Received invalid metadata error in produce request on partition topic-21 due to org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition.. Going to request metadata update now
[Producer clientId=producer-5] Got error produce response with correlation id 974706 on topic-partition topic-21, retrying (8 attempts left). Error: NOT_LEADER_FOR_PARTITION
[Producer clientId=producer-5] Got error produce response with correlation id 974707 on topic-partition topic-21, retrying (1 attempts left). Error: NOT_LEADER_FOR_PARTITION

有什么已知的方法可以避免这种情况吗? 我们应该回到默认的 MAX_INT 重试次数吗? 为什么它不断发送到同一个代理,即使它响应 NOT_LEADER_FOR_PARTITION?

欢迎任何提示。

编辑:我们刚刚注意到代理指标 kafka_network_requestmetrics_responsequeuetimems 在那段时间左右上升,但我们看到的最大值约为 2.5 秒


Produce 和 Fetch 请求都会发送到分区的领导副本。 NotLeaderForPartitionException 当请求发送到现在不是分区的领导者副本的分区时抛出异常。

客户端将每个分区的领导者信息维护为缓存。缓存管理的完整流程如下所示。

enter image description here

客户端需要通过设置刷新此信息metadata.max.age.ms在生产者配置中。该标签的默认值为 300000 毫秒

您可以阅读以下 Apache Kafka 文档。

https://kafka.apache.org/documentation/

请仔细阅读 Sender.java 代码。

https://github.com/a0x8o/kafka/blob/master/clients/src/main/java/org/apache/kafka/clients/ Producer/internals/Sender.java

您将在发件人代码中找到这两条错误消息。默认值为metadata.max.age.ms是3秒。我认为你应该减少这个值,然后观察行为。

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

Kafka 生产者无法发送消息,出现 NOT_LEADER_FOR_PARTITION 异常 的相关文章

随机推荐

  • SignalR 2.0.0 beta2 IJsonSerializer 扩展性

    我想添加一些自定义序列化逻辑 以便转换后的 json 包含驼峰式大小写属性 出于这个原因 我尝试用我在此链接中找到的一个替换默认的 IJsonSerializer https github com SignalR SignalR issue
  • 获取“django.core.exceptions.ImproperlyConfigured:需要 GEOS,但尚未检测到”。虽然安装了GEOS

    我在跑姜戈 1 8 and Python 3 4 on Ubuntu 14 04 LTS 就在最近 我的 Django 应用程序报告了这一点GEOS不存在 GEOS已安装并且libgeos c so是它应该在的地方 usr lib 我的代码
  • 使用 xstream 自定义 java 集合的序列化

    我有一个需要序列化为 XML 的对象 其中包含以下字段 List
  • 类型初始值设定项(静态构造函数)异常处理

    我正在用 C 编写 WCF 服务 最初 我的实现有一个静态构造函数来执行一些一次性初始化 但正在完成的某些初始化可能 暂时 失败 看来静态构造函数只被调用一次 即使第一次 失败 尝试抛出异常 任何后续实例化我的类的尝试都将立即失败 并显示T
  • 如何在div内使用带有文本的剪辑路径?

    我尝试了以下方法 http codepen io anon pen YXePBY div lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit
  • JavaScript 判断对象是否为数组的方法[重复]

    这个问题在这里已经有答案了 判断一个对象是否是数组的 正确 方法是什么 函数 isArray o 最好的办法 function isArray obj return Object prototype toString call obj ob
  • 有没有一种方法可以在不按回车键的情况下获取用户输入? [复制]

    这个问题在这里已经有答案了 我正在编写一个控制台游戏 吃豆人 我想知道如何在不按回车键的情况下获得用户输入 我在互联网上浏览了一下 发现了一些关于 getch 但它显然不再是最新的 并且没有已知的头文件来声明它 除非有人构建自己的头文件 而
  • 没有元素的索引数组

    我有一个向量 a Vector 1 4 1 2 3 4 我想将它索引到所有元素but第三个得到 1 2 4 in R你可以做a 3 你在做什么Julia 最终我想循环遍历所有元素并将它们与其余元素进行比较 也许这是相关的 该用例是常见的用例
  • 使 Python 单元测试显示 AssertionError 但不显示 Traceback

    我在这里查看了其他相关问题 但没有找到我的答案 我想简化 Python 2 7 单元测试的输出 试sys tracebacklimit 0不工作 这是我的代码片段 真实的代码会生成很多类似的测试 usr bin python E impor
  • 切换画布上下文

    假设我有一个 WebGL 画布 通过调用getContext experimental webgl 有没有办法稍后切换上下文以使用 2d one 这样做的目的是在渲染过程中发生错误时显示类似调试 BSOD 的信息 如果不可能 那么 我可以在
  • BSP 地下城生成的简单示例

    我最初是想追随这个算法用 C 创建一个简单的 Roguelike 地下城 但我想我太愚蠢了 因为我的结果总是一团糟 然后 我切换到我自己的算法 该算法产生的结果不是很好 但半可识别为地下城 有没有人有任何以 BSP 方式执行此操作的示例 如
  • 如何从 Java 6 中的字节数组中获取 MIME 类型?

    我一直在试图弄清楚如何获取MIME类型来自 Java 6 中的字节数组 但不幸的是还无法获取 MIME 类型 有人可以帮我摆脱这个困境吗 您可以使用MimetypesFileTypeMapJava 6 提供的类 该类专门用于获取MIME类型
  • 在 Pandas 中重新采样,同时保持价值关联

    从这样的事情开始 from pandas import DataFrame time np array 2015 08 01T00 00 00 2015 08 01T12 00 00 dtype datetime64 ns heat ind
  • 如何使用 json4s 将对象序列化为 AST?

    我正在编写一个客户序列化程序 在那个序列化器中 我想以某种方式说 这件事你已经知道如何序列化 我目前的方法如下 import org json4s native Serialization import org json4s JsonDSL
  • 如何为单个存储库禁用 git 的凭据助手?

    如果我在我的帐户中设置了凭证助手 gitconfig 如何在特定的存储库中禁用 绕过它并使用no凭证助手 我尝试过编辑存储库 git config文件以清空credential helper像这样的属性 credential helper
  • std::move 的逆函数是否存在? [复制]

    这个问题在这里已经有答案了 std move当移动尚未被隐式允许时 例如often当从函数返回本地对象时 现在 我想知道 尤其是在本地返回和隐式移动的背景下 如果存在这样的逆元std move那将prevent移动对象 但仍然允许复制 这还
  • Python:模块列表(>>> help('modules') 不起作用)

    我想要我的模块列表 并被告知 gt gt gt help modules 会成功的 但我只是得到 请稍等一下 我正在收集 所有可用模块的列表 等了10多分钟才把它杀掉 有谁知道这可能是什么原因造成的 或者我怎样才能看到我的模块 系统Ubun
  • 可变参数嵌套循环

    我正在研究 N 维网格 我想根据任何维度 2D 3D 4D 等 生成嵌套循环 我怎样才能以优雅而快速的方式做到这一点 下面是我的问题的简单说明 我正在用 C 编写 但我认为此类问题对于其他语言也很有用 我需要知道我的 do stuff 部分
  • 如何使用 C# Windows 窗体创建流畅的动画?

    由于我的学校项目 我必须仅使用 Windows 窗体创建游戏 我决定制作一款 2D 赛车游戏 所以现在我需要移动汽车图像 为了移动它 我尝试使用 KeyDown 事件为汽车设置动画 但是动画确实很不稳定 那么还有其他方法来制作动画吗 或者有
  • Kafka 生产者无法发送消息,出现 NOT_LEADER_FOR_PARTITION 异常

    我们使用 spring cloud stream binder kafka 3 0 3 RELEASE 将消息发送到我们的 Kafka 集群 2 4 1 生产者线程之一时不时地收到 NOT LEADER FOR PARTITION 异常 甚