Kafka Streams 2.5.0 需要输入主题

Mar*_*sen 5 apache-kafka-streams

从 Kafka Streams 2.5.0 开始,拓扑似乎必须包含输入主题。在 Kafka 2.4.1(及更早版本)中,情况并非如此。

我有一个应用程序,其中拓扑只是创建一些全局状态存储,这些存储从其他应用程序写入的主题中读取数据。

使用 Kafka 2.5.0 我得到这个错误:

13:24:27.161 [<redacted>-7cf1b5c9-4a6e-4bf2-9f77-f7f85f2df3bb-StreamThread-1] ERROR o.a.k.s.p.internals.StreamThread - stream-thread [<redacted>-7cf1b5c9-4a6e-4bf2-9f77-f7f85f2df3bb-StreamThread-1] Encountered the following error during processing:
java.lang.IllegalStateException: Consumer is not subscribed to any topics or assigned any partitions
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1228)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1216)
    at org.apache.kafka.streams.processor.internals.StreamThread.pollRequests(StreamThread.java:853)
    at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:753)
    at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:697)
    at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:670)
Run Code Online (Sandbox Code Playgroud)

如果我添加一个虚拟输入主题(例如通过streamsBuilder.stream(Pattern.compile("hack"));),应用程序启动正常。

这种行为是预期的还是 Kafka Streams 2.5.0 中的无意更改?

更多细节:上面的用例可能看起来有点奇怪,我不得不同意。首先这样做的原因是交互式查询的一个缺点,即应用程序在一段时间内无法回答查询。我看到这个问题已经通过KIP-535在 Kafka Streans 2.5.0 中得到解决,这很好。我希望以后再研究智商。

小智 3

当我们切换(返回)到使用集合订阅时,在 2.5.0 中引入了回归。刚刚合并了修复程序,因此您应该在发布时升级到 2.5.1 或 2.6。