如何根据 2 个不同的服务激活器中发生的不同故障进行不同的更新查询?
How to do different update queries based on different failures happening in 2 different service activaters?
xml 配置 spring -集成
<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 次后进行更新 query.Also,我想进行另一个不同的更新 query.This 是不可能的,因为我只有一个入站适配器..我可以用 spring-集成来处理它吗?我只想根据我的 2 个服务激活器中发生的不同故障进行不同的更新查询..任何人都可以请帮忙?
为此目的,您应该在 recovery-channel
上使用 <int-jdbc:outbound-channel-adapter>
和所需的 UPDATE
。一个 <service-activator>
的更新,另一个 <service-activator>
.
的更新和频道
不然你的问题不清楚。
也请详细说明一下:
This is not possible since i have only one inbound adapter.
如果你的意思是 update="update query"
在 <int-jdbc:inbound-channel-adapter>
上,你不能改变它。对于消息传递架构来说,这是一个有点突破性的概念。轮询端点必须在向通道发送消息之前完成其工作。我的意思是 UPDATE
是在 JdbcPollingChannelAdapter
中完成的,就在 SELECT
之后,在向 inchannel
发送消息之前。您无法控制下游流程。
xml 配置 spring -集成
<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 次后进行更新 query.Also,我想进行另一个不同的更新 query.This 是不可能的,因为我只有一个入站适配器..我可以用 spring-集成来处理它吗?我只想根据我的 2 个服务激活器中发生的不同故障进行不同的更新查询..任何人都可以请帮忙?
为此目的,您应该在 recovery-channel
上使用 <int-jdbc:outbound-channel-adapter>
和所需的 UPDATE
。一个 <service-activator>
的更新,另一个 <service-activator>
.
不然你的问题不清楚。
也请详细说明一下:
This is not possible since i have only one inbound adapter.
如果你的意思是 update="update query"
在 <int-jdbc:inbound-channel-adapter>
上,你不能改变它。对于消息传递架构来说,这是一个有点突破性的概念。轮询端点必须在向通道发送消息之前完成其工作。我的意思是 UPDATE
是在 JdbcPollingChannelAdapter
中完成的,就在 SELECT
之后,在向 inchannel
发送消息之前。您无法控制下游流程。