簡體   English   中英

訂購Spring Batch中的分區步驟

[英]Order partitioned steps in Spring Batch

我已經實現了Spring批處理分區,並且正在返回Map<String, ExecutionContext> result = new HashMap<>(); Partitioner partition()方法開始。

我的要求是以特定順序(從插入順序到result圖)開始從屬步驟,而上述Map不會發生這種情況。

我試圖使用Map<String, ExecutionContext> result = new LinkedHashMap<>(); 這也沒有用-地圖中的任何線程都是隨機啟動的。

我在主步驟配置中使用SimpleAsyncTaskExecutor作為執行程序,並且concurrencyLimit並行線程開始使用。 如果我設置concurrencyLimit=1 ,那么我要插入第一個線程以開始result映射,依此類推。

如何執行此訂購?

從查看代碼開始,隨着上述步驟的進行,您可能需要覆蓋StepExecutionSplitter#split,我相信您可以擴展SimpleStepExecutionSplitter類並實現Split方法,在split方法中,您需要將用於收集StepExecution的集合從HashSet更改為LinkedHashSet。同時考慮重新啟動,那么您可能還需要考慮在getContexts方法中進行更改。

以下是添加拆分器的代碼段。

stepBuilders.get("partitionStep")
                .partitioner(slaveStep)
                .partitioner("myParitionerStep", partitioner)
                .taskExecutor(new SimpleThreadPoolTaskExecutor())
                .splitter(new SimpleStepExecutionSplitter(jobRepository, allowStartIfComplete, stepName, partitioner))
                .build()

暫無
暫無

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

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