【发布时间】:2021-11-05 05:53:51
【问题描述】:
我正在用Spring boot应用连接MongoDB,我的情况是MongoDB意外宕机,抛出连接异常、mongodb连接超时异常和socket异常。
我想在 Spring Boot 中捕获上述异常,然后关闭应用程序。我尝试使用 HealthIndicator 中的 @schduled,它每 3 秒在 DB 中执行一个简单命令并捕获一般异常,它可以工作,但它不是正确的方法,因为多个实例会产生大量负载。
不幸的是,我不能使用@controlleradvice 和@exceptionhandler,因为我不想通过执行查询抛出任何异常。带有查询的命中数据库会给具有多个实例的数据库带来负载。
有什么办法可以处理我的情况吗?
【问题讨论】:
-
为什么要在 mongo 关闭时关闭 Spring Boot 应用程序?您是否考虑过使用 Spring Boot Actuator 来告诉您的客户服务已关闭且尚未准备好接受请求?看看这个问题/答案 - stackoverflow.com/questions/41803253/…
-
是的,但我的业务用例是想要关闭,因为它从 Kafka 读取。企业想要关闭而不是停止从 Kafka 读取数据。
标签: spring mongodb spring-boot spring-data-mongodb