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

2020-12-07 16:01发布

问题:

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

回答1:

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



回答2:

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



回答3:

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



回答4:

xxljob可以解决



回答5:

解决quartz集群并发问题



回答6:

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



回答7:

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

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



回答8:

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