如何确认 kafka consumer 的可用性

282 天前
 sankooc

客户端平台:springboot 现在的问题是检测当前订阅的 topic 的 listenr 是否可用 之前是看日志里的 partitions assigned [] 和 kafka ERROR 日志确认的 但是经过测试这个并不靠谱 大家都是如何确认 kafka consumer is ready 的 kafka 是甲方提供的只有 topic 的 READ 权限

717 次点击
所在节点    问与答
7 条回复
lixen9
282 天前
如果是基于 consumer group 去消费的话,那可以通过查看消费者对应的 consumer group 状态去做一个检测;如果是通过 assign 的方式消费的话,这个目前好像只能自行通过代码维护了
sankooc
282 天前
@lixen9 是基于 consumer group 做的 但是甲方提供的账号没有 describe 权限 无法查看状态
lixen9
282 天前
那也可以试试监测 consumer 的心跳线程,心跳线程会在消费者启动的时候开启,在消费者关闭的时候结束,只需要监测这个线程是否存活应该就行
sankooc
280 天前
@lixen9 是 kafka-coordinator-heartbeat-thread | <group-name> 这个线程名吗 只要这些线程处于等待状态即可是吧?
lixen9
280 天前
我理解只要线程存在应该就可以 consumer 停止之后,这个线程应该会消失,你可以测试看看,好久没看过那块代码了
lixen9
280 天前
@sankooc 是这个名称的
lixen9
280 天前
简单看了下代码,KafkaConsumer 对象在 close 方法中会调用 ConsumerCoordinator 的 close 方法,然后 ConsumerCoordinator 在调用 close 方法的时候会在 finally 块中调用 super.close()方法,在 super 的 close 方法中会将心跳线程关闭。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1024981

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX