2012-10-15 30 views
0

我們在集羣環境中部署了一個應用程序。每隔5分鐘我們的應用程序就會將ping操作發送給與其連接的所有其他應用程序爲了完成這項工作,我們使用了非持久Quartz調度器。java中的非持久性Quartz調度程序

問題是,在集羣環境中,只有一個節點正在執行此活動(ping操作)。是否有任何參考或任何示例代碼? (這是一個簡單的servlet應用程序。)

+1

我已經更新了您的問題的一些措辭,以便於閱讀 - 但我不確定第一句的含義。你是說只有一個節點**正在發送ping命令(並且你希望剩下的)?或者你的**要求**只有一個節點發送ping,但是目前每個節點都是? –

+0

是的,只有一個節點正在執行ping操作,我希望所有其他節點執行ping操作(集羣環境)。 –

回答

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。

+0

我在集羣環境中測試了上述代碼,它工作得很好。現在我在這裏再遇到一個挑戰。有什麼方法可以隨時啓動和停止這些調度程序? –

+0

@RajeshGupta:請爲此打開另一個問題,並隨時評論後續鏈接 –