spring -integration的xml配置
<int-jdbc:inbound-channel-adapter id="inchannel"
query="query the db" data-source="dataSource" max-rows-per-poll="1"
update="update query">
<int:poller fixed-rate="8000">
<int:transactional />
</int:poller>
</int-jdbc:inbound-channel-adapter>
<bean id="sp" class="main.poll" />
<int:channel id="ec">
<int:dispatcher task-executor="taskExecutor" />
</int:channel>
<task:executor id="taskExecutor" pool-size="2" />
<int:service-activator input-channel="inchannel"
output-channel="ecl" ref="sp" method="grpe">
<int:request-handler-advice-chain>
<int:retry-advice recovery-channel="errorchannel" />
</int:request-handler-advice-chain>
</int:service-activator>
<int:service-activator input-channel="ec" ref="sp"
method="gdl">
<int:request-handler-advice-chain>
<int:retry-advice recovery-channel="errorchannel"/>
</int:request-handler-advice-chain>
</int:service-activator>
“ec”是一个执行器通道,它从“inchannel”获取输出。“ec”是第二个服务激活器的输入通道。 场景:在第一次服务的所有3次重试失败后,我想要进行更新查询。在第二次服务激活器重试3次之后,我想做另一个不同的更新查询。这是不可能的,因为我只有一个入站适配器。 。我可以使用spring-integration处理它吗?我只想根据我的2个服务激活器中发生的不同故障做不同的更新查询 ..任何人都可以帮忙吗?
答案 0 :(得分:0)
为此,您应在<int-jdbc:outbound-channel-adapter>
上使用UPDATE
所需的recovery-channel
。一个<service-activator>
的更新,另一个更新和频道也是另一个<service-activator>
。
否则您的问题不明确。
请详细说明:
这是不可能的,因为我只有一个入站适配器。
如果您的意思是update="update query"
<int-jdbc:inbound-channel-adapter>
,则无法更改。对于消息传递架构来说,这是一个有点突破的概念。轮询端点必须在向消息发送消息之前完成其工作。我的意思是UPDATE
在JdbcPollingChannelAdapter
之后SELECT
完成,然后向inchannel
发送消息。您无法控制下游流程。