2016-02-11 90 views
-1

錯誤如果我改名,我以前處理的文件MultiResourcePartitioner沒有更新的彈簧批次 - 錯誤/上MultiResourcePartitioner

{stepExecutionContext [「文件名」]}的值。

起初,我處理「FILE1.TXT」,並出於某些原因則處理失敗,我重命名的文件爲「FILE2.TXT」春批次仍在尋找「FILE1.TXT」。所以我的解決方法是刪除BATCH_STEP_EXECUTION_CONTEXT上的所有記錄以獲取新文件。

我不知道,如果這一個錯誤也許我錯過了一些配置,但我期待的是,彈簧一批將始終皮卡在目錄中,而不是在數據庫中的文件。

+0

可以使用https://jira.spring.io/browse/BATCH/發佈的bug,據我所知這是正常的行爲,春季批次無法看到外面(文件系統)上的更改,您可以破解的ExecutionContext (由聽衆手工製作) –

+0

謝謝邁克爾。我創建了一個bug。 –

回答

0

當您啓動分區一步,所有的ExecutionContext S的創建,爲每個文件。重新啓動後,分區作業的目標是完成已分區的作業......又稱分區程序不會再運行。這是設計的行爲。

+0

我的場景在生產中很常見,其中壞文件需要通過時間戳糾正並重命名它。正如我所提到的,我有解決方法(刪除BATCH_STEP_EXECUTION_CONTEXT中的所有記錄),但對我來說這是一個破解。我希望spring批處理將增強分區步驟行爲以處理上述情況。 –

+0

我覺得(我沒有試過),你可以設置要在重新啓動重新運行步驟...這可能重新運行該分區(你的根本問題)。但是,您要求的是,重新啓動的行爲與初始運行不同,行爲不正確。按設計重新啓動應重新啓動之前定義的工作。你可以創建你自己的分區器,它做了一些其他的方法來定義什麼是分區,以便新文件被拾取......但這與你的用例直接相關。 –

+0

假設我不需要重啓功能。如果Spring批處理有一個布爾屬性配置,它可以選擇拾取目錄中的文件,這會不錯嗎? –