无法描述Kafka Streams消费者组

时间:2020-04-30 14:01:19

标签: apache-kafka kafka-consumer-api apache-kafka-streams

我想要实现的是确保我的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流消费者。)

1 个答案:

答案 0 :(得分:2)

如果您的应用程序仅 将一个主题具体化为GlobalKTable,则不会形成任何消费者组。在内部,“全局使用者”不使用subscribe(),而是使用assign(),并且没有配置使用者group.id(可以从日志中进行验证),也没有提交偏移量。

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

因此,在“广播”数据时使用使用者组是不起作用的。

但是,所有消费者都应暴露“滞后”指标records-lag-maxrecords-lag(参见https://kafka.apache.org/documentation/#consumer_fetch_monitoring)。因此,您应该能够通过JMX挂接以监视滞后。 Kafka Streams也通过KafkaStreams#metrics()包括客户端指标。