我有一个spring引导服务,它部署在多个示例中。我希望在其中一个示例中有一个连续运行的“守护线程”。如果该示例停止运行,线程最终(在超时后)应该在其他示例上变为活动状态。
该服务使用一个通用的mongodb数据库,原则上它可以提供锁定,但我正在寻找一种模式或库来正确地实现这一点。
我查看了shedlock,但它似乎只适用于具有某种可预测持续时间的短期运行作业,而不是长时间运行的守护进程线程。
我有一个spring引导服务,它部署在多个示例中。我希望在其中一个示例中有一个连续运行的“守护线程”。如果该示例停止运行,线程最终(在超时后)应该在其他示例上变为活动状态。
该服务使用一个通用的mongodb数据库,原则上它可以提供锁定,但我正在寻找一种模式或库来正确地实现这一点。
我查看了shedlock,但它似乎只适用于具有某种可预测持续时间的短期运行作业,而不是长时间运行的守护进程线程。
1条答案
按热度按时间4zcjmb1e1#
我们使用shedlock,我强烈推荐它的简单性。您说希望有一个长时间运行的守护进程线程,但您是否可以使用@scheduled(fixeddelay=0)注解的方法,该方法将运行,然后在上一次迭代完成后再次触发,由spring运行?您可以将其用作“while”循环,而不是一个内部有一个永无止境while循环的方法。