产品提了一个可以动态添加报警服务的需求,之前的报警任务都是配置在spring的配置文件中写死的,现在要求可以动态添加、修改、删除,这几天在网上查了一下 spring 3.1 (及以上)+ quartz 2.0(以上)版本 可以支持动态添加,入库(服务重启后可以从数据库中读取任务) , 但是遇到一个问题,我们的服务是同时部署在2台服务器上的,为了保持负载均衡,这样就导致在动态添加job的时候 就不能确定请求落在哪台服务器上,导致了一个不一致的问题,而且如果服务重启,2台服务器同时从数据库中读取任务,就导致任务多次执行的问题,大家有没有什么好的方法解决这个问题
quartz有他的持久化的方案的吧,看起来有点复杂(懒得大改),所以自己参考资料写了一个简单的,根据数据库锁保证只有同一时间只有一台服务器跑(多台服务器时间不一致那就可能会跑多次,但不会影响业务),加了两张表一张日志,一张job表
支持手动加载(作用不大...),手动运行(感觉唯一有价值的)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。