背景:同一个JobKey对应的任务在同一集群下,同一时刻只有一台机器执行。

需求:使用Quartz同时触发集群多台机器同一JobKey对应的任务

效果:无论哪个机器得到的资源,它都要通过HTTP请求通知另外的实例去执行相应的方法。这样就达到了某个实例执行,又让其它没得到调度的实例执行了相应的方法。

可以考虑在定时任务的JobDataMap中增加一个字段"url"。该参数"url"可以像我这样配置

{       ....,

        "url" : "10.10.0.11:80/dispatch;10.10.0.12:80/dispatch;10.10.0.13:80/dispatch" ,

        "param":"{  param_ json }"

}

这样可以解析该参数后,将请求使用HTTP请求,转发到同一集群的其它机器上。

当前系统:定时任务Job中 调用 void business();

Http请求:Controller中调用Service调用 void business();