我想实现的是确保我的Kafka流消费者不会有滞后。
我有一个简单的Kafka流应用,它将一个主题以GlobalKTable的形式具体化为存储。
当我尝试通过命令来描述Kafka上的消费者时,我看不到任何结果。
kafka-consumer-groups --bootstrap-server localhost:9092 --describe --group my-application-id
我看不到任何结果 而且也没有错误。当我通过以下方式列出所有消费者时,我的应用消费者被正确列出。
kafka-consumer-groups --bootstrap-server localhost:9092 --describe --all-groups
我的应用消费者被正确列出
有什么办法可以找到更多的信息,让我无法描述消费者? (任何其他Kafka流的消费者写到主题都可以正确描述)。
如果你的应用程序没有 只是 具体化 GlobalKTable
没有形成消费群体。对内,"全球消费者 "不使用 subscribe()
不过 assign()
而没有消费者 group.id
配置(你可以从日志中验证),并且没有提交偏移。
原因是,所有的应用实例都需要消耗所有的主题分区(即广播模式)。然而,一个消费组的设计是,不同的实例读取同一主题的不同分区。而且,每个消费组,每个分区只能提交一个偏移量--但是,如果多个实例读取同一个分区,并且将使用相同的偏移量提交。group.id
的提交会互相覆盖。
因此,在 "广播 "数据的同时使用消费者组是行不通的。
但是,所有的消费者都应该暴露一个 "滞后 "指标 records-lag-max
和 records-lag
(比照 https:/kafka.apache.orgdocumentation#consumer_fetch_monitoring。). 因此,您应该能够通过JMX挂接来监控滞后。Kafka Streams包括客户端的指标,通过 KafkaStreams#metrics()
也是