預發環境與生產環境共享數據庫時定時任務重復執行問題解決


背景:

為保證預發環境的真實性,預發與生產環境往往共享數據庫,在定時任務列表中,預發與生產環境都會從任務列表中獲取定時任務,然后執行,這會導致定時任務會執行重復。

解決方法:

在job中增加一個環境變量字段,如test,stg,prod等,當創建任務的時候獲取執行創建任務服務器的profile,根據profile插入到jod的上述字段中。定時任務執行時判斷任務是否符合執行機器的profile,符合則執行,不符合則不執行。

具體可執行操作:

1.在tomcat或者啟動腳本中加入vm參數,例如

  -Dspring.profiles.active=stg 
2.代碼獲取profile的辦法示例:

@Autowired
Environment env;

簡單的controller獲取如下:

  @RequestMapping(value="/getProfiles")
  @ResponseBody
  public String getProfiles() throws ParseException {
      StringBuffer sb=new StringBuffer();
      String[] profiles= env.getActiveProfiles();
      for(String profile:profiles){
          sb.append(profile).append("\r\n");
      }
    return sb.toString();
  }

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM