Spring 按顺序处理从ServiceActivators到多个出站通道适配器的消息
我们有以下使用Spring集成的简单需求:Spring 按顺序处理从ServiceActivators到多个出站通道适配器的消息,spring,spring-data-jpa,spring-integration,Spring,Spring Data Jpa,Spring Integration,我们有以下使用Spring集成的简单需求: 为传入任务轮询几个DB表(状态为1的行) 处理上述行中的每一行并更新多个表,例如A、B和C。 这些更新可能是连续的和依赖的,即B和C应该在A保存后更新,因为以后需要该信息 以下是对B和C的限制:B将使用A的id加上使用轮询找到的行中的信息 在步骤1中设置状态标志。至0 到目前为止,我们所拥有的: 入站通道适配器用于轮询步骤1 <int-jpa:inbound-channel-adapter channel="inboundWFOne"
A、B和C
。
B
和C
应该在A
保存后更新,因为以后需要该信息B
和C
的限制:B
将使用A
的id加上使用轮询找到的行中的信息李>
状态
标志。至0
入站通道适配器
用于轮询步骤1
<int-jpa:inbound-channel-adapter channel="inboundWFOne"
entity-manager="entityManagerFactory"
jpa-query="select en from WorkflowOne en where en.status=1"
delete-after-poll="true">
<int:poller>
<int:transactional propagation="REQUIRED" transaction-manager="transactionManager" />
<!-- Note: This is not working for us.. hence the delete-after-poll for timebeing <int:transactional propagation="REQUIRED" transaction-manager="transactionManager" synchronization-factory="txSyncFactory"/>-->
</int:poller>
</int-jpa:inbound-channel-adapter>
的
,它将a
、B
和C
路由到不同的频道,那里将有出站频道适配器
写入数据库。然而,没有设计保证订单!
我们如何形成链,以便在A
被持久化后,我们将id
传递回B
和C
可以使用它。基本满足上述2.2的条件注意:
int:jpa
的出站通道适配器似乎没有任何方法传回持久化对象。有。如果没有任何线程移位,则所有操作都在同一线程中按顺序执行。因此,您的列表感谢您的回复,除了顺序写入DB之外,我们还需要在步骤1中生成id以用于后续步骤。那么在链中
有没有办法让B
和C
先等待a
继续?然后我们把A
的id
传递给B
和C
?哦!对不起,错过了那部分。所以,是的,你需要一个网关。即使你将其用于B和C,你也可以忽略回复。这样,当您发送一个消息时,您将在下一次迭代中使用return。我甚至建议从ServiceActivator手动执行,不要执行任何返回列表
<int:service-activator input-channel="inboundWFOne" ref="wfOneService"
method="processWFOne" output-channel="outboundWFOne" />