首页 新闻 搜索 专区 学院

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

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

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

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

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

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

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

Yuan先森 | 园豆:218 (菜鸟二级) | 2020-12-02 17:02
0

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

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

xxljob可以解决

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

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

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

xxl-job使用中,非常方便,配置灵活,支持分布式

https://www.jianshu.com/p/47531e386080

码农记事本 | 园豆:202 (菜鸟二级) | 2020-12-04 23:58
0

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

慧☆星 | 园豆:5533 (大侠五级) | 2020-12-07 15:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册