Kafka无法在应用程序启动时配置主题,但以后可以通信

时间:2019-05-02 13:00:46

标签: apache-kafka spring-kafka

我们有一个使用spring-kafka(2.2.5.RELEASE)的spring boot应用程序,在启动时总是会收到此错误:

Could not configure topics 
org.springframework.kafka.KafkaException: Timed out waiting to get existing 
topics; nested exception is java.util.concurrent.TimeoutException

但是,应用程序继续启动:

org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] 
INFO  o.s.k.l.KafkaMessageListenerContainer - partitions revoked: []
INFO  o.s.k.l.KafkaMessageListenerContainer - partitions assigned: [my-reply-topic-1]
INFO  o.s.k.l.KafkaMessageListenerContainer - partitions assigned: [my-request-topic-0]
INFO  o.s.b.w.e.tomcat.TomcatWebServer -
Tomcat started on port(s): 8080 (http) with context path ''

此时,应用程序将按预期与Kafka进行交互。

我们希望保持日志整洁,因此我们想了解为什么抛出此异常。而且,这有点令人困惑,因为当我们移至尚未在应用程序和kafka代理之间建立网络的其他环境时,会遇到相同的错误,但应用程序无法运行。尝试解决连接问题时,当确实存在问题并且可以忽略时,会发生相同的异常。

在应用程序启动时,有没有一种方法可以确定是否已与Kafka建立了连通性,而不仅仅是等待超时消息(无论如何可能都是鲱鱼)?

1 个答案:

答案 0 :(得分:1)

如果主题已经存在,请从应用程序上下文中删除任何NewTopic bean,而KafkaAdmin根本不会尝试连接到代理。