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