我是春季批处理的新手。我正在使用远程分块,其中有一个 master ,多个 slave 和 ActiveMQ 用于消息传递。
Master 有一个工作和一个工作启动器,并且工作启动器有一个任务执行器,它具有以下配置
<task:executor id="batchJobExecutor" pool-size="2"queue-capacity="100" />
。
块配置是
<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 正在创建块并提交到队列,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
请帮我解决一下这个。