使用Quartz同时触发集群多台机器同一任务
背景:同一个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();