当前位置: 首页 > 知识库问答 >
问题:

当kafka broker不可用时,如何防止正在运行的Spring Boot应用程序宕机?

何博涛
2023-03-14

当Kafka broker不可用时,我的spring Boot2.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来绕过它,这样应用程序就不会关闭,但当broker返回时,它不会使用消息,直到重新启动为止。

共有1个答案

郝原
2023-03-14

将容器属性MissSingTopicsFataly设置为False以防止在初始化期间尝试连接到代理。现在默认为false(在版本2.3.4和更高版本中)。

您可以使用KafKalistenerEndpointRegistrybean启动autostartup=false容器-为侦听器提供一个ID并使用它从注册表获取对容器的引用。

 类似资料:
  • 我有一个正在运行的Spark应用程序,它占据了所有核心,而我的其他应用程序将不会被分配任何资源。 我做了一些快速的研究,人们建议使用YARN kill或 /bin/spark-class来杀死命令。然而,我使用的是CDH版本, /bin/spark-class根本不存在,YARN kill应用程序也不起作用。 有人能和我一起吗?

  • 我正在以独立模式运行Spark群集。 我已使用以下选项提交了群集模式下的Spark应用程序: 使作业具有容错性。 现在我需要保持集群运行但停止应用程序运行。 我尝试过的事情: 停止集群并重新启动它。但是当我这样做时,应用程序会恢复执行。 使用了名为DriverWrapper的守护进程的Kill-9,但之后工作再次恢复。 我还删除了临时文件和目录并重新启动了集群,但作业再次恢复。 所以正在运行的应用

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 我有一个SpringBoot批处理应用程序,我正在针对它编写集成测试。当我执行测试时,整个批处理应用程序都会运行。如何仅执行测试中的应用程序代码? 这是我的测试代码。当它执行时,整个批处理作业步骤将运行(读卡器、处理器和写入器)。然后,测试运行。