我们在集群环境中部署了一个应用程序。应用程序每隔5分钟向连接到它的所有其他应用程序发送ping操作。我们使用非持久性Quartz调度程序来完成这项工作。
问题是在集群环境中只有一个节点正在执行此活动(ping操作)。是否有任何参考或任何示例代码? (这是一个普通的servlet应用程序。)
答案 0 :(得分:0)
由于所有节点都在群集中工作,因此每个作业仅在一台计算机上运行(大多数空闲的计算机)。这就是您使用群集的原因。但是您希望所有计算机独立运行给定的作业,而不是了解其他集群节点。基本上,你根本不需要Quartz(集群)!
足够使用ScheduledExecutorService.html#scheduleAtFixedRate()
:
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
final Runnable pinger = new Runnable() {
public void run() {
//send PING
}
};
scheduler.scheduleAtFixedRate(pinger, 5, 5, MINUTES);
只需在每台机器上运行此代码,并在需要的地方使用Quartz。