我已经使用执行程序服务为Kafka消费者编写了Java代码,该服务将以24/7的速度运行并使用数据并进行处理。
但是在某些情况下,例如由于Kafka协调器代理节点发生故障,工作将失败,即,消费者组将死亡并且我将不知道它,并且Java jar将运行但不执行任何操作。
INFO [2018-11-07 03:25:58,425] [pool-1-thread-1] (AbstractCoordinator.java:coordinatorDead) - Marking the coordinator broker_host (id: 2147483446 rack: null) dead for group group_name
INFO [2018-11-07 03:26:10,817] [pool-1-thread-1] (AbstractCoordinator.java:onSuccess) - Discovered coordinator broker_host (id: 2147483446 rack: null) for group group_name.
我想定期检查Java代码中的Kafka消费者活动情况。因此,如果卡夫卡消费群体死亡,我将能够使其生存或触发邮件并杀死工作。
任何人都可以对此提供任何输入。
答案 0 :(得分:1)
如果充当您的消费者组协调员的经纪人失败了,则该组中的每个消费者都将找到剩下的哪个经纪人将成为其组的新协调员。这种情况不会对您的团队致命。
但是,监视消费者群体仍然是很常见的事情,以跟踪滞后,在需要时扩大/缩小规模或仅确保一项重要工作正在实际运行!
最简单的方法是使用AdminClient API,尤其是:
describeConsumerGroups()
:这会列出成员和组的总体状态listConsumerGroupOffsets()
:这将列出当前偏移量或者,您可以运行kafka-consumer-groups.sh
工具来检索有关组的详细信息。显示当前位置,滞后和客户ID或成员。