關於@SchedulerLock的屬性含義

參考博客:https://blog.csdn.net/qq_37779271/article/details/84581918

1.註解屬性

@SchedulerLock所含屬性name ,lockAtMostFor ,lockAtLeastFor
name :定時器名稱,每次只會執行一個,name類似分組
lockAtMostFor:該屬性指定在執行節點死亡時應保留鎖的時間。這只是一個後備,在正常情況下,鎖定會在任務完成後立即釋放。
lockAtLeastFor屬性,指定保留鎖的最短時間。主要目的是在任務非常短的且節點之間存在時鐘差異的情況下防止多個節點執行。這個屬性是鎖的持有時間。設置了多少就一定會持有多長時間,再次期間,下一次任務執行時,其他節點包括它本身是不會執行任務的。

示例:

假設您有一個每15分鐘執行一次的任務,通常需要幾分鐘才能運行。此外,您希望每15分鐘最多執行一次。在這種情況下,您可以像這樣配置它
private static final int FOURTEEN_MIN = 14 * 60 * 1000;
@SchedulerLock(name = “scheduledTaskName”, lockAtMostFor = FOURTEEN_MIN, lockAtLeastFor = FOURTEEN_MIN)
通過設置lockAtMostFor,我們確保即使節點死亡也會釋放鎖定,並且通過設置lockAtLeastFor,我們確保它在十五分鐘內不會執行多次。請注意,如果任務花費的時間超過15分鐘,則會再次執行。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章