我们正在从Spring Batch 2.2升级到Spring Batch 4.1。我的配置如下所示:Spring批处理分区作业聚合问题当我启动服务器时,我会看到以下日志消息(我正在尝试使用JMS响应运行(。
Caused by: org.springframework.integration.handler.support.MessagingMethodInvokerHelper$IneligibleMethodException: Found more than one parameter type candidate: [org.springframework.batch.core.partition.StepExecutionSplitter] and [org.springframework.batch.core.StepExecution]
结果是消息聚合无法按预期工作。我看到的不是所有返回消息都进入AggregatorMessageHandler中的单个MessageStore,而是进入两个MessageStore。日志记录清楚地显示了添加消息,将传入消息分为两个不同的组。(为了提高可读性,我缩短了消息的内容(。
2020-08-26 17:14:05,778 TRACE [AggregatingMessageHandler] (springbatch.taskExecutor-3) Adding message to group [ SimpleMessageGroup{groupId=4:partitioned.step, messages=[], timestamp=1598483645777, lastModified=0}]
2020-08-26 17:14:08,342 TRACE [AggregatingMessageHandler] (springbatch.taskExecutor-4) Adding message to group [ SimpleMessageGroup{groupId=4:partitioned.step, messages=[], timestamp=1598483648342, lastModified=0}]
2020-08-26 17:14:08,538 TRACE [AggregatingMessageHandler] (springbatch.taskExecutor-2) Adding message to group [ SimpleMessageGroup{groupId=4:partitioned.step, messages=[
GenericMessage [payload=StepExecution: id=51, version=3, name=partitioned.step:0, status=COMPLETED, exitStatus=COMPLETED, ...], timestamp=1598483645778, lastModified=1598483645778}
2020-08-26 17:14:12,117 TRACE [AggregatingMessageHandler] (springbatch.taskExecutor-5) Adding message to group [ SimpleMessageGroup{groupId=4:partitioned.step, messages=[
GenericMessage [payload=StepExecution: id=52, version=3, name=partitioned.step:2, status=COMPLETED, exitStatus=COMPLETED, ...]], timestamp=1598483645778, lastModified=1598483645778}
2020-08-26 17:14:13,680 TRACE [AggregatingMessageHandler] (springbatch.taskExecutor-1) Adding message to group [ SimpleMessageGroup{groupId=4:partitioned.step, messages=[
GenericMessage [payload=StepExecution: id=51, version=3, name=partitioned.step:0, status=COMPLETED, exitStatus=COMPLETED, ...],
GenericMessage [payload=StepExecution: id=49, version=3, name=partitioned.step:4, status=COMPLETED, exitStatus=COMPLETED, ], timestamp=1598483645778, lastModified=1598483648538}]
这是由于启动时的调试消息吗?我该如何解决这个问题?据我所知,以下是通过JMS配置分区作业的示例。(春季批次4.1(
提前感谢您的任何建议。
尝试使用method="aggregate"
为分区处理程序配置聚合器。看起来解析器也试图使用来自MessageChannelPartitionHandler
的handle(StepExecutionSplitter, StepExecution)
作为候选。