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

2020-12-07 16:02发布

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

8条回答
ら.Afraid
2楼-- · 2020-12-07 16:21

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

查看更多
我欲成王,谁敢阻挡
3楼-- · 2020-12-07 16:22

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

查看更多
ゆ 、 Hurt°
4楼-- · 2020-12-07 16:23

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

查看更多
女痞
5楼-- · 2020-12-07 16:25

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

查看更多
我只想做你的唯一
6楼-- · 2020-12-07 16:27

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

查看更多
登录 后发表回答