簡體   English   中英

Spring-Batch:如何在Spring Batch中的異常記錄上返回自定義退出代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM