Scheduled Job多例項下只跑一台例項設計

2021-09-25 04:36:45 字數 761 閱讀 4534

本文方案是使用鎖機制,由於定時任務是多台例項在同一時間開始執行,可以採用鎖機制:每台例項在跑之前,先去獲取鎖,成功獲取鎖的,開始執行定時任務,獲取不到的,放棄執行。lockid 儲存在mongodb中,當然也可以儲存在redis中。

第一步,建立乙個model,用於儲存lockid.

@data

@document(collection = "scheduled_lock")

public class scheduledlock

expireafterseconds

這個屬性用來設定ttl.

第二步,實現lock, unlock方法。

public t lock(t lock) ]", lock);

return mongolockrepository.insert(lock);

}public void unlock(t lock) ]", lock);

mongolockrepository.delete(lock.getid());

}

第三步,scheduled job跑之前先獲取鎖,獲取不到的就不執行。

@scheduled

public void scheduledjob() catch (exception e) finally

} catch (duplicatekeyexception exception)

}

mysql多例項命令 mysql多例項安裝

1 編輯my.cnf檔案增加相關引數如下 mysqld multi user root pass 123 mysqld usr local mysql bin mysqld safe mysqladmin usr local mysql bin mysqladmin log usr local my...

mysql啟動多例項 MySQL多例項啟動

一台伺服器安裝mysql,用於測試。同時會用於nextcloud和wordpress的資料庫。nextcloud和wordpress要經常備份,而且以後可能會遷移。所以隔離不同情景的資料,用多例項啟動。便於管理,和提高效能。首先初始化要用到的資料庫 mysqld initialize insecur...

mysql單機多例項 MYSQL單機多例項

一 建立安裝目錄 mkdir usr local mysql s 5.6.32 mkdir usr local mysql m 5.6.32 wget tar zxv f mysql 5.6.32.tar.gz 二 編譯命令 1 主編引數 cmake dcmake install prefix da...