我正在使用kafka流api,并且遇到了一些问题,在这些问题上我订阅了多个主题,而使用者却挂了。它具有唯一的application.id
,在kafka中可以看到已经创建了消费者组,但是当我描述该消费者组时,我将得到:consumer group X has no active members
。我已经将它运行了将近一个小时。
有趣的是,当topics
列表仅包含1个主题时,此方法有效。我对创建多个源的其他答案不感兴趣,例如:source1 = builder.stream("topic1")
和source2 = builder.stream("topic2")
,因为StreamsBuilder.stream
的接口支持一系列主题。
之前我已经可以订阅多个主题,但是我无法复制我们的操作方式。 (此代码在不同的环境中运行并按预期运行,因此不确定是时间问题还是其他原因
List<String> topics = Arrays.asList("topic1", "topic2");
StreamsBuilder builder = new StreamsBuilder();
KStream<String, String> source = builder.stream(topics);
source
.transformValues(...)
.map(key, value) -> ...)
.to((key, value, record) -> ...);
new KafkaStreams(builder.build(), props).start();
UPDATE 06/18/19
启用日志后,很明显,我们正在尝试订阅和发布不存在的主题。虽然我们有auto.topic.create.enable=true
,但没关系。因此最终进行了启动检查,如果未事先创建所有主题,则会导致脚本退出,因为我们没有动态创建主题。