中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot怎么解決多個deploy執行schedule定時器導致并發問題

發布時間:2021-06-29 11:43:58 來源:億速云 閱讀:644 作者:chen 欄目:大數據

這篇文章主要講解了“springboot怎么解決多個deploy執行schedule定時器導致并發問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“springboot怎么解決多個deploy執行schedule定時器導致并發問題”吧!

springboot部署多個相同服務deploy,當服務中有定時器時,一旦定時器觸發時服務會同時執行,從而產生并發問題。解決方案:

1.在定時器類添加@Profile 注解 指定實例執行定時器。

@Component
@Configuration
@EnableScheduling   // 1.開啟定時任務
@Profile("deploy01")
public class ScheduleTaskService {

....
}

它操作簡單,靈活。只需要添加@Profile注解,但它的局限性也很明顯,只有指定服務為deploy01時才會加載定時器處理類,一旦deploy01 掛掉或者未啟動就無法執行。所以并不能達到高可用。

2.利用redis 緩存機制

   @Scheduled(cron = "0 0 0/1 * * ? ")  //每1小時執行一次
    public void insertPriRecoverCall() throws InterruptedException {
        String deployKey="deployName";
        redisService.set(deployKey,deployId,1,TimeUnit.HOURS);
        Object o = redisService.get(deployKey);
        if (o!=null){
            String deployName = o.toString();
            if (deployId.equals(deployName)){
                logger.info(deployName+" is running .....");
                ////業務代碼  
          }
        }
    }

先獲取服務實例Id,緩存到redis中。redis 是key-value 鍵值對的緩存機制。在相同key下只會保留一個deployId ,再取出緩存中deployId和服務實例id 比較。相同就繼續執行業務代碼,不同則直接過濾。這樣既可以防止并發問題,又可以實現高可用。

感謝各位的閱讀,以上就是“springboot怎么解決多個deploy執行schedule定時器導致并發問題”的內容了,經過本文的學習后,相信大家對springboot怎么解決多個deploy執行schedule定時器導致并發問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青龙| 连云港市| 平江县| 龙州县| 开封市| 静乐县| 德令哈市| 万载县| 黄骅市| 永城市| 中西区| 灌南县| 巫溪县| 永和县| 泗阳县| 永修县| 西峡县| 建始县| 湛江市| 弥渡县| 昭觉县| 仁寿县| 广元市| 西华县| 广德县| 沁源县| 喀喇沁旗| 专栏| 陆良县| 象山县| 柳林县| 横山县| 荥阳市| 丰原市| 天峨县| 航空| 钦州市| 衡水市| 重庆市| 江都市| 托克逊县|