簡體   English   中英

如果Item Reader不返回任何內容,如何跳過Spring Batch塊中的Item Writer?

[英]How to skip Item Writer in Spring Batch chunk if Item Reader returns nothing?

所以我有一個Spring Batch Project,它有一個重復的步驟。

<batch:job id="fooJob">
    <batch:step id="barStep">
        <batch:tasklet>
            <batch:chunk reader="myReader" writer="myWriter"
                commit-interval="5">
            </batch:chunk>
        </batch:tasklet>
    </batch:step>
</batch:job>

該閱讀器是一個JdbcCursorItemReader ,它也具有RowMapper來將其從數據庫檢索的信息存儲到POJO中。 然后, "myWriter"將POJO中設置的字段寫入文本文件。 而且這種情況經常發生(由cron決定)。

當數據庫為空並且閱讀器無法讀取任何內容時,如何設置條件以完全跳過itemWriter?

在面向塊的Tasklet中,所有內容都以塊的形式處理,而不是所有項目。 要在讀者什么都沒讀時跳過,您必須知道實際上沒有任何物品。 遇到空數據塊是不夠的,因為之前可能還有另一個數據塊。

一種簡單的解決方法是,如果什么也沒讀,則讓該步驟繼續進行。 在這種情況下,作者將沒有任何東西可寫。 假設您正在使用FlatFileItemWriter寫入文件,則可以對其進行配置,以不留空文件。 這是通過shouldDeleteIfEmpty屬性完成的:

指示關閉時未寫任何行(頁眉和頁腳除外)的目標文件的標記。 默認為false

這樣,您只需要配置該屬性為true writer即可。 如果未寫入任何內容,它將刪除空文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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