Kafka 消费者无法读取所有可用分区

2024-06-29

我们注意到我们的产品主题之一(6 个分区)存在一个奇怪的问题,其中我们的消费者(dotnet core,只有 1 个实例)只能从 3 个分区(0,1,3)读取。这显然会影响应用程序行为,因为消费者丢失了来自其他 3 个分区 (2、4、5) 的消息。我们能够验证主题配置没有任何问题。 由于怀疑由于消息过期而导致偏移提交问题,我们从主题中删除了所有消息(通过将保留期更改为较小的数字),但这并没有解决问题。 我们尝试了多次重新启动消费者应用程序,每次分区分配都保持不变(0,1,3),这使我们相信其他分区存在问题。我们正在考虑创建一个新主题的想法。我想,我会将其发布在这里以检查我们是否遗漏了某些内容。任何意见都将受到赞赏。谢谢。


  1. 首先,检查并确认所有分区都正在接收来自生产者的消息
  2. 确认后,检查消费者启动时的分区分配策略,并确认消费者客户端已分配主题的所有分区。如果无法使用消费者客户端本身,kafka-consumer-groups.sh可以使用实用程序
  3. 确保没有其他消费者客户端具有相同的group_id运行并使用来自主题的消息

使用 kafka-consumer-groups.sh 列出所有消费者组

kafka-consumer-groups.sh --list --bootstrap-server <kafka-broker>:<port>

上面的命令将列出集群管理的所有主题的所有消费者组。

缩小到您感兴趣的消费者组后,使用以下命令列出消费者组的消费者部分。

kafka-consumer-groups.sh --bootstrap-server <kafka-broker>:<port> --describe --group <your-consumer-group>

kafka-consumer-groups.sh 脚本返回有关主题分区的所有信息,包括

  • 当前偏移量 - 已消费消息的当前最大偏移量 此消费者实例的分区
  • 日志结束偏移量 - 的偏移量 分区中的最新消息
  • lag - 消耗的偏移量和最新偏移量之间的差异
  • 客户端 ID - 用于区分同一消费者中各个客户端的 ID 团体

示例1:当前偏移量为 4,滞后为 2,客户端 ID 为空 - 意味着消费者客户端不再注册并处理任何消息。 另请注意消息说消费者组中没有活跃成员。

kafka-consumer-groups.sh --bootstrap-server <broker-host>:9092 --describe --group my-group

Consumer group 'my-group' has no active members.

GROUP           TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
my-group        my-topic        0          4               6               2               -               -               -

示例2:当前偏移量为 4,滞后为 2 并且客户端 ID 不为空 - 表示消费者客户端当前未处理消息。但是,它之前处理了一些消息。

kafka-consumer-groups.sh --bootstrap-server <broker-host>:9092 --describe --group my-group

GROUP           TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                      HOST            CLIENT-ID
my-group        my-topic        0          4               6               2               test-client-31ca0f5d-958e-4a30-b028-e3d975b41fd6 /0.0.0.0    test-client

示例3:LOG-END-OFFSET 为 0。因此,到目前为止,还没有针对该主题生成任何消息。

kafka-consumer-groups.sh --bootstrap-server <broker-host>:9092 --describe --group my-group

GROUP           TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                      HOST            CLIENT-ID
my-group        test1           0          0               0               0               test-client-08763d84-c4be-49f8-a75f-286c1968f6f9 /0.0.0.0    test-client

示例4:CURRENT-OFFSET 为 0。但 LOG-END-OFFSET 为 2,LAG 也为 2 - 表示该主题分区中有消息。然而,它并没有被消耗。

kafka-consumer-groups.sh --bootstrap-server <broker-host>:9092 --describe --group my-group_new_4

Consumer group 'my-group_new_4' has no active members.

GROUP           TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
my-group_new_4  test1           0          0               2               2               -               -               -

这将帮助您找出本答案开头提出的问题,并隔离/解决问题。

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

Kafka 消费者无法读取所有可用分区 的相关文章

随机推荐

  • MockMVC 给出 HttpMessageNotReadableException

    我仍在学习测试方法 并且正在尝试让 MockMvc 测试为我工作 这是一个简单的 REST 控制器 此时仅使用帖子中的 json 信息进行一些身份验证 我实际上已经实现了代码 所以我知道它正在工作 因为我收到了带有正确输入的正确响应和我放在
  • 计算两个坐标之间的距离和路线

    我有 2 个坐标 想做一些看似简单的事情 我想弄清楚 鉴于 1 坐标A 2 Core Location提供的课程 3 坐标B 下列 1 A 和 B 之间的距离 目前可以使用 distanceFromLocation 来完成 所以就可以了 2
  • 在 ASP.NET Core 中,Delegate 如何转换为 RequestDelegate?

    我调查了什么MapGet 正在做 发现其中一个重载需要一个Delegate类型 类 不是关键字 也不是RequestDelegate 然后将其传递给MapMethods 这需要一个RequestDelegate 我觉得非常令人困惑的是这个演
  • 在 JavaScript 中使用 Array.map 删除元素

    我想使用以下方法过滤一系列项目map 功能 这是一个代码片段 var filteredItems items map function item if some condition return item 问题是过滤掉的项目仍然使用数组中的
  • 更改二维数组每一行中的键而不丢失值

    我有一个行数组 其中一个 视觉 数据列有两个相似但不同的键 我想替换其中一个键 以便该列在所有行中具有相同的键 我的输入数组 Ttitle gt lilly Price gt 1 75 Number gt 3 Title gt rose P
  • 对于 X 中的每个元素,找到最大的索引,而不会超出 Y 中的范围

    我正在寻找一种方法来提高以下算法的性能 给定两个数组 X 和 Y 对于 X 的每个元素 找到 Y 中不超过 X 中元素值的最大值的索引 可以安全地假设 X 和 Y 是单调递增 已排序 并且 Y 1 小于每个X 中的值 而且 X 通常比 Y
  • Laravel 5.7 + 真棒字体

    我正在尝试将 Font Awesome 工具包包含在 Laravel 5 7 中 这些是我采取的步骤 1 Run npm install save dev fortawesome fontawesome free 2 检查文件夹node m
  • javascript 可以从父页面访问 iframe 元素吗?

    我的页面上有 iframe iframe 和父页面位于不同的域中 父页面上的 javascript 代码可以访问此 iframe 内的元素吗 如果页面来自不同的域 则不应该这样做 浏览器安全沙箱应该阻止这种类型的访问 当两个页面来自不同的时
  • AVAudioSessionManager availableInputs“未知为端口 iPhone 麦克风选择的数据源”

    我在控制台日志中注意到这个错误已经有一段时间了 虽然它不影响我的应用程序的执行 但我觉得它真的很烦人 于是 我开始追查这个错误是从哪里来的 事实证明 当我调用 availableInputs 时 NSArray inputs AVAudio
  • 打印 ArrayList 多个值时,它仅显示 -> '[]'

    我在显示元素时遇到问题ArrayList在爪哇 返回时ArrayList当它从 Views 调用到 BMIAnalyzier 类时 该类现在包含虚拟值表单 表明 当java文件运行时 视图 java Switch choice 0 case
  • 我想批量将回车换成逗号

    我有一个名为 test txt 的文本文件 其中包含名为PROP VALUES 使用批处理 我想用逗号替换所有其他回车符 但仅限于PROP VALUES部分 附上原始文件test txt和修复后的文件testfixed txt Origin
  • 如何使预处理器为 __LINE__ 关键字生成字符串?

    FILE 由 C 预处理器替换为 MyFile cpp 我想 LINE 替换为 256 字符串而不是 256 整数 不使用我自己编写的函数 例如 toString LINE 那可能吗 我该怎么做 VS 2008 EDIT我想自动查找并替换全
  • 执行java命令时如何获取错误信息?

    我在 java 代码中调用位于 jar 文件中某处的类 使用 java classpath path file jar classname 这很有效 但前提是命令格式良好 如果我犯了一个错误getRuntime exec 命令 只是什么也没
  • 如何在 Angular 中按 ID 显示博客详细信息

    我想在 Angular 中通过 ID 显示博客详细信息 为此 当您单击博客主页上的按钮时 应用程序会将您带到博客详细信息页面 即 pagina component html 文件 我实现了在此处显示所有博客 但我真正想要的是显示一个独特的博
  • 数据库中无法识别的数据类型 nvarchar

    我尝试将 MySQL 服务器数据导入 PHPMyAdmin MySQL 数据库 无法识别的数据类型 nvarchar 发现 我的数据库排序规则设置为 utf general ci 您不必担心 nvarchar 消息 它是由 phpmyadm
  • 在 MATLAB 中矢量图形导出期间位图渲染绘图的一部分

    我有一个非常复杂的函数 我用它来绘制fsurf具有相当高的MeshDensity 我不能比默认值低太多 即 35 导出该图 saveas gcf file pdf pdf 会生成一个 20MB 的 pdf 文件 质量非常好 但渲染速度非常慢
  • 在ggplot2中设置base_size时重叠轴标签

    我正在改变base size via theme set 当我在屏幕上查看结果图时 它看起来很棒 但是 当我将其另存为 pdf 时 x 轴标签有点太接近轴编号 一件小事 theme set theme bw base size 9 不会造成
  • 如何更改 uib-tabset 中每个选项卡的路由

    当我选择一个选项卡时 我希望更改 url 我应该为每个选项卡创建一个状态吗 这是我的代码 无需更改状态即可正常工作 我的应用程序 js var myApp angular module app ui router ngAnimate ui
  • 有没有办法检查 iOS 设备是否锁定/解锁?

    我在我的应用程序中使用了 GPS 位置更新 我想检测 iOS 设备是否处于睡眠模式 以便我可以关闭 GPS 位置更新并优化电池使用 我已经在iOS 6中尝试过pausesLocationupdates 但它无法按预期工作 我想在设备进入睡眠
  • Kafka 消费者无法读取所有可用分区

    我们注意到我们的产品主题之一 6 个分区 存在一个奇怪的问题 其中我们的消费者 dotnet core 只有 1 个实例 只能从 3 个分区 0 1 3 读取 这显然会影响应用程序行为 因为消费者丢失了来自其他 3 个分区 2 4 5 的消