簡體   English   中英

創建一個守護線程,該線程恰好在(可能是復制的)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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM