![](/img/trans.png)
[英]How to start (and eventually stop) a daemon thread in Spring-Boot?
[英]Create a daemon thread that runs in exactly one instance of a (possibly replicated) Spring Boot service
我有一個部署在多個實例中的 Spring Boot 服務。 我想在其中一個實例中連續運行“守護線程”。 如果該實例出現故障,該線程最終(超時后)應該在其他某個實例上處於活動狀態。
該服務使用通用 MongoDB 數據庫,原則上可以提供鎖定,但我正在尋找一種模式或庫可以正確執行此操作。
我查看了Shedlock ,但它似乎僅適用於具有可預測持續時間的短期運行的作業,而不是長時間運行的守護線程。
我們使用 Shedlock,我強烈推薦它,因為它很簡單。 你說你想要一個長時間運行的守護線程 - 但是你能不能有一個 @Scheduled(fixedDelay=0) 注釋的方法,該方法會運行,然后在上一次迭代完成后立即被 Spring 再次觸發運行? 您可以將其用作“while”循環,而不是在內部具有永無止境的 while 循環的單個方法。
我目前正在使用LockExtender來擴展活動鎖。 它對您的用例有幫助嗎? 用法是
LockExtender.extendActiveLock(Duration.of(5, MINUTES), ZERO);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.