预发环境与生产环境共享数据库时定时任务重复执行问题解决
2023-09-11 14:21:40 时间
背景:
为保证预发环境的真实性,预发与生产环境往往共享数据库,在定时任务列表中,预发与生产环境都会从任务列表中获取定时任务,然后执行,这会导致定时任务会执行重复。
解决方法:
在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(); }
相关文章
- 关于SQLServer无法对数据库'XXX'执行删除,因为它正用于复制
- Oracle可插拔数据库的jdbc连接串写法
- Navicat 实现数据库迁移
- Oracle数据库:排序order by语句,select from where order by的执行先后顺序,各种样例
- 在 Navicat 中执行数据库范围搜索
- 如何安装Oracle 12c数据库软件
- Qt中多线程间的同步方法(使用QMutex互斥锁,数据库读取写入并发用很关键)
- 国产CPU执行SPL实现数据库运算的性能实用性测试
- 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.17 执行查询语句/SQL脚本
- Android Sqlite数据库执行插入查询更新删除的操作对比
- Python代码大全之读取与更新sqlite数据库
- 数据库执行计划慢导致I/O 慢
- SpringBoot+Mybaits搭建通用管理系统实例二:实体及数据库表创建
- Java_jdbc 基础笔记之七 数据库连接(方法升级)
- SQL Server 2017数据库卸载教程
- 过滤文本文档中的数据并插入Cassandra数据库
- 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结
- 连接数据后,当执行查询语句报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
- 曹工杂谈--使用mybatis的同学,进来看看怎么在日志打印完整sql吧,在数据库可执行那种
- Python、Django、Mysql详细搭建开发,model操作数据库以及执行原生SQL
- MYSQL 监控数据库SQL语句 查看数据库执行语句