我对Spring批处理框架相当陌生。
我在一个作业中创建了两个步骤(我们称之为步骤1和步骤2)。我想把它们并行运行。不仅如此,step2的IteamReader还应该使用step1的itemwriter。
我的第一个问题是,在Spring批量中是否有可能做到这一点?如果是,怎么做?
其次,如果这不可能,还有什么工作可以做呢?
谢了。
您可以使用
一次运行两个步骤来破解它。步骤1将写入步骤2可以从中读取的队列。这里的关键是确保步骤2的读取器在MessageConsumer
上有适当的超时时间,以便它能够等待足够长的时间,以便步骤1将一个块写入队列。
<split id="splitStep" task-executor="asyncTaskExecutor" >
<flow>
Step 1: reader -> processor -> writer (to queue)
</flow>
<flow>
Step 2: reader (from queue) -> processor -> final writer
</flow>
</split>
也就是说,有什么理由不能仅仅使用复合处理器吗?
Step 1: reader -> processor 1 -> processor 2 -> writer
或者更好的是,你需要把它分块吗?它可能是Spring集成之类的更好的用例。
Reader: reads source, returns List<SourceItem>
Processor 1: List<SourceItem> in, perform transformations, List<TransformedItem> out
Processor 2: List<TransformedItem> in, additional transformations, List<FinalItem> out
Writer: List<List<FinalItem>> in, unpack the list, write to final destination
如果要这样做,您将绕过框架通常的工作方式,因此需要将提交间隔设置为1(因为您只希望读取器返回1个列表),并通过更改列表中项的#来确定读取器中的块大小。
null 如果生成错误(文件不一致,文件不存在...),则不能执行 仅供参考,我使用的是没有XML配置的Spring批处理!只有注释:下面是我的作业配置类的样子:
我们正在处理一个Spring批处理作业,其中我们需要存储在一个步骤中计算的数据,并在下一个步骤中检索它。 我能够在Spring批处理源代码中使用以下实现以独立的方式实现这一点 http://static.springsource.org/spring-batch/reference/html/patterns.html#passingDataToFutureSteps 但是我们以CLIENT/MA
我们的Spring批处理作业只有一个步骤,我们在步骤中有读取器,处理器,写入器操作。当上一步失败时,如何停止继续执行处理器步骤?
我设置了以下测试用例: 我想使用Groovy脚本测试步骤获得SoapRequest测试步骤的状态。 它可以如下所示完成: 但是我不想通过脚本运行TestStep,而只是使用soapui testrunner。在datasink测试步骤中,我可以使用这个: 不幸的是,上述方法在GroovyScript TestStep中不起作用 有什么想法吗?
我需要自动化一些web服务,为此我创建了一些方法,我想用Cucumber来实现,但是我不知道如何在下一步使用返回值。 所以,我有这个功能: 我有这个步骤: 有什么方法可以一步到另一步使用返回的值? 谢谢大家!
我试图建立一个jenkins多分支管道,在docker容器中运行我的所有代码验证步骤,然后构建docker映像并将其推出docker容器。 目前,我的 Jenkinsfile 看起来有点像这样(为了便于阅读,它精简了): 这里的问题是,我使用 dockerfile 代理的每个阶段,jenkins 都会尝试重建 docker 映像。这些阶段都被缓存了,但是发送构建上下文并实际处理所有内容仍然需要比我