预发环境与生产环境共享数据库时定时任务重复执行问题解决
背景:
為保證預(yù)發(fā)環(huán)境的真實(shí)性,預(yù)發(fā)與生產(chǎn)環(huán)境往往共享數(shù)據(jù)庫(kù),在定時(shí)任務(wù)列表中,預(yù)發(fā)與生產(chǎn)環(huán)境都會(huì)從任務(wù)列表中獲取定時(shí)任務(wù),然后執(zhí)行,這會(huì)導(dǎo)致定時(shí)任務(wù)會(huì)執(zhí)行重復(fù)。
解決方法:
在job中增加一個(gè)環(huán)境變量字段,如test,stg,prod等,當(dāng)創(chuàng)建任務(wù)的時(shí)候獲取執(zhí)行創(chuàng)建任務(wù)服務(wù)器的profile,根據(jù)profile插入到j(luò)od的上述字段中。定時(shí)任務(wù)執(zhí)行時(shí)判斷任務(wù)是否符合執(zhí)行機(jī)器的profile,符合則執(zhí)行,不符合則不執(zhí)行。
具體可執(zhí)行操作:
1.在tomcat或者啟動(dòng)腳本中加入vm參數(shù),例如
-Dspring.profiles.active=stg? 2.代碼獲取profile的辦法示例: @Autowired
 Environment env;
簡(jiǎn)單的controller獲取如下:
@RequestMapping(value="/getProfiles")@ResponseBodypublic 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();}?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/6839751.html
總結(jié)
以上是生活随笔為你收集整理的预发环境与生产环境共享数据库时定时任务重复执行问题解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: mybatis使用注解替代xml配置,动
- 下一篇: 微服务可靠性设计--转
