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