猿问

启动springboot服务器时如何绕过kafka代理失败?

我在 spring-boot(2.1.7.RELEASE) 应用程序服务器中遇到问题,该服务器使用 spring-boot-Kafka('spring-Kafka' -'2.2.7.RELEASE') 集成库来访问我的 Kafka 主题。

当我的 Kafka 代理关闭时,我的应用程序无法启动。

这就是我得到的:

2019-10-06 02:41:02.764  WARN -- [main           ] org.apache.kafka.clients.NetworkClient                       [] : [Consumer clientId=consumer-1, groupId=caas] Connection to node -1 could not be established. Broker may not be available.


Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

2019-10-06 02:41:31.777 ERROR -- [main           ] org.springframework.boot.SpringApplication                   [] : Application run failed


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

    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:185)

    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53)

    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360)

    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158)

    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122)

    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:893)

    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162)

    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552)


有没有办法绕过对 Kafka 代理的依赖?即使经纪人不可用/关闭,我也希望我的应用程序能够启动。一旦代理启动,应用程序服务器应该能够连接。


潇潇雨雨
浏览 109回答 2
2回答

弑天下

有一个容器属性missingTopicsFatal:&nbsp;https://docs.spring.io/spring-kafka/api/org/springframework/kafka/listener/ContainerProperties.html#isMissingTopicsFatal&nbsp;- 即使主题和/或经纪人不可用。@Bean(name = "kafkaListenerContainerFactory")public ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory(&nbsp; &nbsp; ConsumerFactory<Object, Object> kafkaConsumerFactor,&nbsp; &nbsp; ConcurrentKafkaListenerContainerFactoryConfigurer configurer) {&nbsp; ConcurrentKafkaListenerContainerFactory<Object, Object> factory =&nbsp; &nbsp; &nbsp; new ConcurrentKafkaListenerContainerFactory<>();&nbsp; configurer.configure(factory, kafkaConsumerFactor);&nbsp; ContainerProperties containerProperties = factory.getContainerProperties();&nbsp; containerProperties.setMissingTopicsFatal(false);&nbsp; ...&nbsp; return factory;}

慕勒3428872

这是新版本的spring的变化。@Componentclass ContainerFactoryConfigurer {&nbsp; &nbsp; ContainerFactoryConfigurer(ConcurrentKafkaListenerContainerFactory<?, ?> factory) {&nbsp; &nbsp; &nbsp; &nbsp; factory.getContainerProperties().setMissingTopicsFatal(false);&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答