当Kafka代理不可用时,我的spring boot 2.1.5消费者应用程序出现异常,但出现以下异常。它使用的是spring-kafka 2.2.6。我需要我的应用程序保持运转,并在kafka经纪人回来时继续消费。
例外:
org.springframework.context.ApplicationContextException: Failed to start bean
'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry';
nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
我已经尝试使用autostartup=false
来使用@KafkaListener并使用CommandLineRunner来解决它,该应用程序不会关闭,但是当代理重新启动直到重新启动时,它不会消耗消息。
答案 0 :(得分:1)
将容器属性misssingTopicsFatal
设置为false
,以防止在初始化期间尝试连接到代理。现在默认为false
(在2.3.4和更高版本中)。
您可以使用autoStartup=false
bean启动KafkaListenerEndpointRegistry
容器-给侦听器一个id
,并使用它从注册表中获取对该容器的引用。