如何根据 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 发送消息之前。您无法控制下游流程。