我们在集群环境中部署了一个应用程序。每 5 分钟,我们的应用程序就会向与其连接的所有其他应用程序发送一个 ping 操作。为了完成这项工作,我们使用了非持久性 Quartz 调度程序。
问题是在集群环境中只有一个节点在执行此活动(ping 操作)。是否有任何参考或任何示例代码?(这是一个普通的 servlet 应用程序。)
我们在集群环境中部署了一个应用程序。每 5 分钟,我们的应用程序就会向与其连接的所有其他应用程序发送一个 ping 操作。为了完成这项工作,我们使用了非持久性 Quartz 调度程序。
问题是在集群环境中只有一个节点在执行此活动(ping 操作)。是否有任何参考或任何示例代码?(这是一个普通的 servlet 应用程序。)
由于所有节点都在集群中工作,因此每个作业只在一台机器上运行(最空闲的一台)。这就是您使用集群的原因。但是您希望所有机器独立运行给定的作业,而不知道其他集群节点。基本上,你根本不需要 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。