春のバッチ処理は初めてです。master 、複数のスレーブ、およびメッセージング用の ActiveMQ がある リモートチャンクを使用しています。
マスターにはジョブとジョブランチャーがあり、ジョブランチャーには次の構成を持つタスクエグゼキューター
<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" />
したがって、一度に 2 つのジョブを実行でき、残りのジョブはキューに入れられます。
2 つのジョブが送信されると、マスターはチャンクを作成してキューに送信し、スレーブは処理を行っています。
しかし、スレーブからマスターへの確認応答でエラーが発生しています
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
これで私を助けてください。