2016-12-14 96 views
0

想象一下,我們想要在午夜每天運行一個簡單的Spring批處理作業。但是我們有兩個節點的集羣。我們希望這個作業只運行一次 - 因此,第一個啓動的節點將完成作業,第二個節點將跳過處理。Spring批處理 - 重複作業成功完成

這應該是很容易做到的,因爲Spring Batch的持有它在兩個節點相同的數據庫狀態。它通常有效,但不幸的是,有時兩個節點同時執行作業並完成作業。然後我可以在數據庫中看到重複的作業執行(相同的參數)。

我想我找到了爲什麼會發生 - 只是工作執行開始檢查是否有作業實例已經在數據庫之前,如果沒有,然後創建一個新的行。但是,當兩者同時檢查數據庫時,都發現沒有任何東西可以創建並運行相同的執行。

我們必須有兩個節點相同的配置。

回答

0

解決這個最簡單的方法就是讓你的讀者和作家同步。如果Reader/Writer的代碼不能更改,那麼實現包裝同步

+0

我不想同步在一個JVM中,但也在計算機之間.... – user3190916

相關問題