V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sankooc
V2EX  ›  问与答

如何确认 kafka consumer 的可用性

  •  
  •   sankooc · 234 天前 · 668 次点击
    这是一个创建于 234 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    7 条回复    2024-03-21 15:44:27 +08:00
    lixen9
        1
    lixen9  
       234 天前
    如果是基于 consumer group 去消费的话,那可以通过查看消费者对应的 consumer group 状态去做一个检测;如果是通过 assign 的方式消费的话,这个目前好像只能自行通过代码维护了
    sankooc
        2
    sankooc  
    OP
       234 天前
    @lixen9 是基于 consumer group 做的 但是甲方提供的账号没有 describe 权限 无法查看状态
    lixen9
        3
    lixen9  
       233 天前
    那也可以试试监测 consumer 的心跳线程,心跳线程会在消费者启动的时候开启,在消费者关闭的时候结束,只需要监测这个线程是否存活应该就行
    sankooc
        4
    sankooc  
    OP
       232 天前
    @lixen9 是 kafka-coordinator-heartbeat-thread | <group-name> 这个线程名吗 只要这些线程处于等待状态即可是吧?
    lixen9
        5
    lixen9  
       232 天前
    我理解只要线程存在应该就可以 consumer 停止之后,这个线程应该会消失,你可以测试看看,好久没看过那块代码了
    lixen9
        6
    lixen9  
       232 天前
    @sankooc 是这个名称的
    lixen9
        7
    lixen9  
       232 天前
    简单看了下代码,KafkaConsumer 对象在 close 方法中会调用 ConsumerCoordinator 的 close 方法,然后 ConsumerCoordinator 在调用 close 方法的时候会在 finally 块中调用 super.close()方法,在 super 的 close 方法中会将心跳线程关闭。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2335 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:53 · PVG 23:53 · LAX 07:53 · JFK 10:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.