首页 新闻 会员 周边

java部署集群,怎么保证定时器只在一台服务上运行

0
悬赏园豆:15 [已解决问题] 解决于 2020-12-07 16:36

使用的是Quartz,如何避免重复执行。

小埋的哥哥!的主页 小埋的哥哥! | 初学一级 | 园豆:110
提问于:2020-12-02 15:42
< >
分享
最佳答案
2

请搜索 Quartz 分布式
参考: https://www.cnblogs.com/tqlin/p/11064519.html

收获园豆:15
czd890 | 专家六级 |园豆:14412 | 2020-12-02 20:36
其他回答(7)
0

三种办法:
1:只在一台服务器上部署该定时任务代码。
2:在定时任务代码上加上某个特定的ip限制,仅某个ip的服务器能运行该定时任务。
3:利用数据库的共享锁事务管理机制来运行定时任务。

Roc丶Y | 园豆:218 (菜鸟二级) | 2020-12-02 17:02
0

加个 if判断就好了,获取当前服务器的host,然后就不用说了吧

小小咸鱼YwY | 园豆:3210 (老鸟四级) | 2020-12-02 17:23
0

xxljob可以解决

KingMi | 园豆:1344 (小虾三级) | 2020-12-02 17:58
0
ycyzharry | 园豆:25651 (高人七级) | 2020-12-03 00:09
0

可以试试xxl-job,定位就是分布式任务调度器,而且从quartz 切换到xxl-job就是一个注解的区别,几乎无缝过渡

Zery | 园豆:6151 (大侠五级) | 2020-12-03 09:31
0

解耦定时任务和业务处理,Quartz只负责定时发送MQ消息,支持幂等(避免业务级别上的重复处理)的MQ消费端, Quartz任务存储(共享任务进度,避免重复发送任务)

慧☆星 | 园豆:5640 (大侠五级) | 2020-12-07 15:03
0

分布式调度平台

代码可乐 | 园豆:139 (初学一级) | 2021-12-03 16:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册