簡體   English   中英

如何在Spring Batch的塊過程中調用另一個步驟?

[英]How to call another step within an chunk process in Spring Batch?

Spring Batch有以下可能/建議嗎?

我有一個csv文件,例如foo.csv。 我設置了一個塊處理,將文件讀入Foo對象,然后將其處理為Bar對象。 最后,將它們寫入文件bars.csv。

foos.csv ---- [IR] ----> Foo ---- [IP] -----> Bar ------ [IW] ----> bars.csv

其中IR代表ItemReader,IP代表ItemProcessor,IW代表ItemWriter

現在,我想進一步處理Bar對象,將其變成Baz對象並對其進行其他處理,例如將其寫入文件bazs.csv左右。

foos.csv ---- [IR] ----> Foo ---- [IP 1] -----> Bar ------ [IW 1] ----> bars.csv
---- [IP 2] -----> Baz ------ [IW 2] ----> bazs.csv

或者,甚至更好

foos.csv ---- [IR] ----> Foo ---- [IP 1] -----> Bar ------ [IW 1] ----> bars.csv
----- [IW 2] ----> [下一步]

我們迭代中重復調用下一步,從而傳遞下一個Bar對象。 在下一步中,我們可以轉換為Baz。

因此,總而言之:是否可以在塊過程中調用步驟? 這是個好主意嗎? 如果沒有,有哪些替代方案?

目前您至少有2種可能的解決方案

  • 鏈接itemprocessors ,每個處理器也可以是writer
  • 使用數據庫保存中間工作並將其用於將來的步驟和/或流程

您的最后一個用例看起來可以通過面向消息的解決方案更好地實現

您可以考慮使用CompositeItemWriter將處理步驟中的數據輸出到兩個不同的源,一個輸出到“ bars.csv”,另一個輸出到某種“ Baz” ItemWriter。

您的流程將如下所示:

foos.csv ---- [IR] ---> Foo --- [IP1] ---> Bar ---- [IW1] ----> bars.csv 
                                                    [IW2] ----> Baz --- [further steps]

這樣可以解決您的用例嗎?

暫無
暫無

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

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