我正在将具有XML配置的Spring Batch分区作业迁移到Spring Batch4.x。我试图利用MessageChannelPartitionHandler的一项改进,在该过程中,它可以通过回复通道和数据源轮询来查找远程步骤的完成情况。
当我使用此配置时:
<int:channel id="partitioned.jms.requests">
<int:dispatcher task-executor="springbatch.partitioned.jms.taskExecutor"/>
</int:channel>
<int:channel id="partitioned.jms.reply" />
<bean id="partitioned.jms.handler" class="org.springframework.batch.integration.partition.MessageChannelPartitionHandler">
<property name="messagingOperations">
<bean class="org.springframework.integration.core.MessagingTemplate">
<property name="defaultChannel" ref="partitioned.jms.requests"/>
</bean>
</property>
<property name="stepName" value="process.partitioned.step"/>
<property name="gridSize" value="${process.step.partitioned.gridSize}"/>
<property name="dataSource" ref="springbatch.repositoryDataSource" />
<property name="pollInterval" value="${springbatch.partition.verification.interval}"/>
</bean>
该步骤完成,但是我在日志中看到错误。
no output-channel or replyChannel header available
我查看了该类,看到可以将ReplyChannel属性添加到MessageChannelPartitionHandler类。如果我添加以下内容:
<property name="replyChannel" ref="claim.acp.process.partitioned.jms.reply"/>
我回到错误状态,需要一个可轮询的通道。
如何创建一个可轮询的通道(假设来自同一JMS队列)?
答案 0 :(得分:0)
您需要显示其余的配置。
如果对结果使用数据库轮询,请将jms出站网关上的cubes = [ ]
for value in cubes = [i**3 for i in range(5)]:
print(value)
设置为output-channel
,通过JMS收到的答复将被丢弃。
或者,使用出站通道适配器(而不是网关)(以及从站上的入站通道适配器)。这样可以避免完全返回答复。
您必须将"nullChannel"
设置为pollRepositoryForResults
。
回答您的特定问题
true