我将 Curator 服务发现与 Spring MVC 休息控制器一起使用,其中每个控制器在 @PostConstruct 中向 ZooKeeper 注册自己,并在 @PreDestroy 中取消注册自己。
我遇到的问题是,在调用 @PreDestroy 方法时,控制器已经不再为请求提供服务。我需要在控制器停止服务请求之前取消注册控制器,以避免在控制器停止和取消注册之间发生的少量请求引发异常。
我已经尝试了 spring ApplicationListener 接口、SmartLifecycle 和 ServletContextListener,并且在所有与关闭/关闭相关的挂钩中,控制器已经停止服务请求。
我需要一个关闭挂钩,我可以在控制器停止服务请求之前取消注册,但我不确定一个是否可用。