无法描述 Kafka Streams Consumer Group

Unable to describe Kafka Streams Consumer Group

我想要实现的是确保我的 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,则不会形成消费者组。在内部,"global consumer" 不使用 subscribe(),而是使用 assign(),并且没有配置消费者 group.id(您可以从日志中验证)并且没有提交偏移量。

原因是,所有应用程序实例都需要消耗所有主题分区(即广播模式)。但是,消费者组被设计成不同的实例读取同一主题的不同分区。此外,对于每个消费者组,每个分区只能提交一个偏移量——但是,如果多个实例读取同一个分区并使用相同的 group.id 提交偏移量,则提交将相互覆盖。

因此,在 "broadcasting" 数据时使用消费者组是行不通的。

但是,所有消费者都应公开 "lag" 指标 records-lag-maxrecords-lag(参见 https://kafka.apache.org/documentation/#consumer_fetch_monitoring)。因此,您应该能够通过 JMX 连接以监控延迟。 Kafka Streams 也通过 KafkaStreams#metrics() 包含客户端指标。