![](/img/trans.png)
[英]Spring-Batch: how do I return a custom Job exit code from a StepListener
[英]Spring-Batch : How do I return custom exit code on invalid record with exception in spring batch
我有一個春季批處理任務,在輸入文件中我有很少的記錄,一些記錄是有效的,而一些記錄是無效的。在有效記錄上,它應該寫入輸出文件,對於無效的記錄,它應該寫入錯誤文件,但有一些例外問題是當將某些東西寫入錯誤文件時,它應該將退出代碼設置為3.我嘗試了很多方法,但無法設置退出代碼,甚至在發生異常時終止該記錄的實例。所以它不叫作家。
您可能不想在這里使用異常。 根據一般經驗,最好避免對預期的業務邏輯使用異常。 相反,如果記錄有效,則考慮簡單地使用ItemProcessor
返回GoodObject
(或原始項目),如果記錄無效,則BadObject
。
然后,利用ClassifierCompositeItemWriter
將好記錄發送到一個文件ItemWriter
,將壞記錄發送到錯誤文件ItemWriter
。
最后,有多種方法可以確定是否遇到任何“不良”記錄。 一種簡單的方法是在您的ItemProcessor
放入一個類級別的boolean
,然后利用StepExecutionListener
afterStep
掛鈎檢查標志並設置ExitCode
。
public class ValidatingItemProcessor implements ItemProcessor<Input, AbstractItem>, StepExecutionListener {
private boolean itemFailed = false;
@Override
public AbstractItem process(final Input item) throws Exception {
if (item.isValid()) {
return new GoodItem();
}
itemFailed = true;
return new BadItem();
}
@Override
public void beforeStep(final StepExecution stepExecution) {
//no-op
}
@Override
public ExitStatus afterStep(final StepExecution stepExecution) {
if (itemFailed) {
return new ExitStatus("3");
}
return null;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.