在 zookeeper 连接丢失后关闭 Spring 引导应用程序

Shutdown Spring boot application after zookeeper connection is lost

我正在 运行在集群 zookeeper 设置中安装 spring 启动应用程序。我正在使用领导者选举来确保只有 springboot 应用程序的一个实例是 运行ning。一旦领导者倒下,其他节点(跟随者)就会占据领导者并开始这个过程。如果 leader 因为我们关闭了应用程序而宕机,那么新的 leader 可以 运行。但是如果网络与领导者一起丢失,那么旧领导者中的进程将仍然是 运行ning 并且新领导者也将 运行。所以两个实例将 运行ning。有没有办法停止旧领导中的应用程序?还是我问错了问题。我是 springboot 和 zookeeper 的新手。如果我错了请纠正我!!

您可以使用 spring-boot-actuator 执行此操作。它有一个 /shutdown 端点,完全按照锡罐上的说明进行操作。请注意,此端点默认情况下未启用,因此您需要通过在 application.properties 中设置以下内容来启用它:

endpoints.shutdown.enabled=true

您可能还想为此配置一些安全措施,因为让任何人直接关闭您的应用程序并不是一个明智的主意。

有关详细信息,请参阅 docs