gpt4 book ai didi

java - Spring 批处理 : How to configure remote chunking for multiple jobs running in a task executor

转载 作者:行者123 更新时间:2023-12-01 06:09:41 24 4
gpt4 key购买 nike

我是 Spring 批处理新手。我正在使用远程分块,其中有一个 master 、多个 Slave 和 ActiveMQ 用于消息传递。

Master 有一个作业和一个作业启动器,作业启动器有一个任务执行器,其配置如下
<强> <task:executor id="batchJobExecutor" pool-size="2"queue-capacity="100" />
block 配置是

<bean id="chunkWriter"
class="org.springframework.batch.integration.chunk.ChunkMessageChannelItemWriter" scope="step">
<property name="messagingOperations" ref="messagingGateway" />
<property name="replyChannel" ref="replies" />
<property name="throttleLimit" value="50" />
<property name="maxWaitTimeouts" value="60000" />
</bean>

<bean id="chunkHandler"
class="org.springframework.batch.integration.chunk.RemoteChunkHandlerFactoryBean">
<property name="chunkWriter" ref="chunkWriter" />
<property name="step" ref="someJobId" />
</bean>

<integration:service-activator
input-channel="requests" output-channel="replies" ref="chunkHandler" />

因此我们可以一次运行两个作业,其余作业将在队列中。
当提交两个作业时,Master 正在创建 block 并提交到队列,而 Slave 正在处理。

但是从站到主站的确认给出了错误

java.lang.IllegalStateException: Message contained wrong job instance id [9331] should have been [9332].
at org.springframework.util.Assert.state(Assert.java:385) ~[Assert.class:4.1.6.RELEASE]
at org.springframework.batch.integration.chunk.ChunkMessageChannelItemWriter.getNextResult

请帮我解决这个问题。

最佳答案

ChunkMessageChannelItemWriter 仅为一个并发步骤而设计 - 您需要将其放在步骤范围内,以便每个作业都有自己的实例 - see this test case

编辑

事实上,没有;这是行不通的——因为 bean 实例使用相同的回复 channel ,它们可以得到彼此的回复。我开了一个JIRA Issue .

关于java - Spring 批处理 : How to configure remote chunking for multiple jobs running in a task executor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37332048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com