2. 节点争抢Job问题
因为Quartz使用了一个随机的负载均衡算法,Job以随机的方式由不同的实例执行。Quartz官网上提到当前,还不存在一个方法来指派(钉住) 一个 Job 到集群中特定的节点。
解决:重写org.quartz.impl.jdbcjobstore.StdJDBCDelegate类selectTriggerToAcquire方法
方法内改动:
String groupConf = System.getProperty("spring.profiles.task");//根据分组查,也可以改成具体某个task,spring.profiles.task 是自己添加的启动配置 -Dspring.profiles.task='分组名'
if ("".equals(groupConf)) {
ps = conn.prepareStatement(rtp(SELECT_NEXT_TRIGGER_TO_ACQUIRE_ALL));
} else {
ps = conn.prepareStatement(rtp(SELECT_NEXT_TRIGGER_TO_ACQUIRE));
}
![240](https://cdn2.jianshu.io/assets/default_avatar/2-9636b13945b9ccf345bc98d0d81074eb.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)