Kafka无法在应用程序启动时配置主题,但稍后可以通信
Kafka Cannot Configure Topics on Application Startup, but Later Can Communicate
我们有一个使用 spring-kafka (2.2.5.RELEASE) 的 spring 引导应用程序,它在启动时总是出现此错误:
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 建立连接,而不是仅仅等待超时消息(无论如何这可能是一个转移注意力的消息)?
如果主题已经存在,请从应用程序上下文中删除任何 NewTopic
个 bean,KafkaAdmin
根本不会尝试连接到代理。
我们有一个使用 spring-kafka (2.2.5.RELEASE) 的 spring 引导应用程序,它在启动时总是出现此错误:
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 建立连接,而不是仅仅等待超时消息(无论如何这可能是一个转移注意力的消息)?
如果主题已经存在,请从应用程序上下文中删除任何 NewTopic
个 bean,KafkaAdmin
根本不会尝试连接到代理。