91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

讷河市| 犍为县| 台湾省| 昭觉县| 元江| 沙田区| 井陉县| 奉化市| 石景山区| 霸州市| 唐山市| SHOW| 广南县| 辰溪县| 宁德市| 青阳县| 石阡县| 南昌市| 绥江县| 道真| 隆化县| 永川市| 平顺县| 阜阳市| 瓮安县| 新民市| 营口市| 德清县| 麦盖提县| 长沙县| 广宁县| 会宁县| 航空| 高陵县| 同江市| 万全县| 镇远县| 桃源县| 禄劝| 兴化市| 比如县|