2016-09-13 11:02
@sdfsf 哪里来的 StandardRtnDto? 没写过这个类
2016-09-12 16:43
@老八 如果要用到集群,可以参考一下这个贴子后面的回复。即便不用集群创建 task与调度 task 分开的事情也是很有好处的。可以点击贴子下方的五角星收藏贴子,方便以后开发的时候有问题再回头查看
2016-09-12 16:33
@九爷同学 其实与其去学习 quartz 的分布式用法,还不如自己建一个 task 表来得简单,而且 task 本身就是需要的,可以记录任务调试的情况,心中有数
2016-09-12 16:33
@九爷同学 cron4j 不支持集群,需要自己写点代码处理好集群部署时的协作。给个方案:
1:将 task 创建与 task 调度分开
2:创建 task 时,向一个集中的数据库表写入记录,假定就叫 task 表
3:task 表中放一个 int lock 字段,用来在分布式环境下来上锁
4:集群中的 taks 调度程序在事务中为将要处理的 task 记录的 lock 字段上锁,置为 1,然后开始处理,其它调度程序在调度的时候发现 lock 为 1 时不处理
这里再建议两个小设计:
1:创建一个 status 字段表明处理状态,根据需求值可以是:0初始、1正处理、2成功、3失败
3:基于 Cron4j 的调度程序在最开始一段代码前面,加一句 Thread.sleep(随机数毫秒数); 这个随机的毫秒数可用 new Random().nextInt(2000); 这样的代码来生成。这样做的好处是避免集群环境下多个使用同样 cron 表达式的线程过于竞争