我有一个由3名动物园管理员和3名kafka经纪人组成的本地码头实例,他们正在运行1.0.0
以确保更新我们的环境将按预期工作。我在kafka 1.0.0
上创建了一个流处理器,它不会消耗或生成任何主题 - 它只是初始化自己。
当我尝试运行此处理器时,收到以下错误消息:
Exception in thread "main" org.apache.kafka.streams.errors.BrokerNotFoundException:
Could not find any available broker.
Check your StreamsConfig setting 'bootstrap.servers'.
This error might also occur, if you try to connect to
pre-0.10 brokers. Kafka Streams requires broker version 0.10.1.x or higher.
at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.ensureOneNodeIsReady(StreamsKafkaClient.java:251)
at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.getAnyReadyBrokerId(StreamsKafkaClient.java:280)
at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.checkBrokerCompatibility(StreamsKafkaClient.java:348)
at org.apache.kafka.streams.KafkaStreams.checkBrokerVersionCompatibility(KafkaStreams.java:712)
at org.apache.kafka.streams.KafkaStreams.start(KafkaStreams.java:746)
at com.overdrive.dataIntegration.ProcessorRunner$StandardProcessorRunner.StartApplication(ProcessorRunner.scala:29)
at com.overdrive.streams.StreamProcessor$.main(StreamProcessor.scala:22)
at com.overdrive.streams.StreamProcessor.main(StreamProcessor.scala)
我的泊坞窗实例是localzoo1:2181
到localzoo3:2183
,以及localkafka1:9092
到localkafka3:9094
。启用调试模式后,我可以看到正在正确加载流处理器的配置:
[2018-01-19 16:09:09,824] INFO [main] StreamsConfig values:
application.id = test-stream-processor
application.server =
bootstrap.servers = [localkafka1:9092]
//more values available upon request
我认为这不是一个docker问题,原因有两个:(1)当docker在版本0.11
上运行kafka群集时,这个确切的设置工作正常,并且流处理器也在{{1和(2)我还创建了一个本地kafka代理,而不是在docker中,并且得到了同样的错误。
如果我创建一个控制台使用者,如果我使用正确的主机名(在我的情况下,0.11
),并且使用不正确的主机名(如localkafka1:9092
),它就不输出任何内容),它会很快出错。我的所有主题都是空的,所以很难知道它到底有多远。我无法在主题中放置任何数据,因为似乎没有任何数据能够完全解析与群集的连接。
最后,我一直在挖掘kafka代码并添加print语句,然后替换处理器中的jar并运行它。从这看起来,abcdefg:9092
(NetworkClient
)中的节点状态似乎陷入了org.apache.kafka.clients
状态。有趣的是,看起来变量CHECKING_API_VERSIONS
是最终的,当它不需要时,因此在轮询过程中它可以设置为false。进行此更改允许处理器连接到代理。
总结 - 我发现很难相信我发现了一个阻止所有流处理器连接到1.0版中的代理的错误,但是摆弄代码已经允许事情开始工作(或者至少完全建立起来)连接)。这是一个已知的问题?在discoverBrokerVersions
和0.11
之间更改的设置中是否存在奇怪的内容?
更新:仅当通过WSL运行流处理器时才会出现此错误;通过powershell运行它可以正常工作。
答案 0 :(得分:0)
异常也可以说流应用程序和kafka代理之间没有网络连接。由于我们遇到了同样的问题,我们首先尝试从主机执行ping操作,其中流应用程序将托管到kafka代理所在的位置。