我正在使用InterProcessSemaphoreMutex
curator recipe来确保我的申请流程始终是单例的。互斥锁有时会因为暂时的网络错误或应用程序暂停(例如,因为 GC)而丢失。我正在使用重试策略,以便进程可以尝试重新获取锁。如果无法在(比如说)5 分钟内重新获得锁,我希望我的应用程序进程退出。
配方的文档建议我们可以监听 ConnectStateChange 事件。指示与 zookeeper 的连接的事件 LOST 已丢失,因此进程也丢失了锁。这样,进程可以检测它是否丢失了锁。
该进程如何检查是否成功重新获取锁?我在互斥锁上找不到任何可以为我提供此信息的方法。可疑有用的“isAcquiredInThisProcess”方法并没有真正给我这些信息。