V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
sankooc
V2EX  ›  问与答

如何确认 kafka consumer 的可用性

  •  
  •   sankooc · Mar 19, 2024 · 1291 views
    This topic created in 775 days ago, the information mentioned may be changed or developed.

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

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