2013-08-21 115 views
0

我有一些使用SAP Java Scheduler在SAP Java系統上運行的批處理作業。不幸的是,我還沒有遇到任何文檔說明如何防止定期工作的併發執行。我所看到的只是「下一次會執行一個新的工作實例」。這破壞了我的fi-fo處理邏輯,所以我需要找到一種方法來防止它。如果調度程序API有辦法檢查相同的作業執行情況,這將得到解決,但還沒有看到一個例子。批處理作業 - 防止併發

作爲一般的體系結構方法,其他方法似乎是使用數據庫表(用於標記當前執行的指示器表)或JNDI參數(在作業開始時將首先檢查)。我也可以「嘗試」使用靜態整數,但這會使羣集實例失敗。該系統符合J2EE5並支持EJB 3.0,因此「singleton EJB」也不可用。我可以設置一個bean的最大池大小,並可能實現類似的結果。

我想聽聽你如何使用不同架構實現這一目標的意見。

親切的問候,

S.格克汗Topcu的

+1

你可以在單個線程池中運行這些任務嗎?這避免了併發性。 –

回答

1

你可以路由的作業就像分貝分片的每一個節點,你可以處理它,就像在一個節點上運行。

或者您必須使用中心節點,如db或memory cache或zookeeper來防止在不同節點上運行相同的作業;

+0

調度程序使用內部JMS隊列,文檔說它將始終運行在單個節點上 - 所以集羣問題已解決,我可以使用靜態布爾值。工作是否簡單! – GTware