我們在集羣環境中部署了一個應用程序。每隔5分鐘我們的應用程序就會將ping操作發送給與其連接的所有其他應用程序爲了完成這項工作,我們使用了非持久Quartz調度器。java中的非持久性Quartz調度程序
問題是,在集羣環境中,只有一個節點正在執行此活動(ping操作)。是否有任何參考或任何示例代碼? (這是一個簡單的servlet應用程序。)
我們在集羣環境中部署了一個應用程序。每隔5分鐘我們的應用程序就會將ping操作發送給與其連接的所有其他應用程序爲了完成這項工作,我們使用了非持久Quartz調度器。java中的非持久性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。
我在集羣環境中測試了上述代碼,它工作得很好。現在我在這裏再遇到一個挑戰。有什麼方法可以隨時啓動和停止這些調度程序? –
@RajeshGupta:請爲此打開另一個問題,並隨時評論後續鏈接 –
我已經更新了您的問題的一些措辭,以便於閱讀 - 但我不確定第一句的含義。你是說只有一個節點**正在發送ping命令(並且你希望剩下的)?或者你的**要求**只有一個節點發送ping,但是目前每個節點都是? –
是的,只有一個節點正在執行ping操作,我希望所有其他節點執行ping操作(集羣環境)。 –