Spring 按顺序处理从ServiceActivators到多个出站通道适配器的消息

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"

我们有以下使用Spring集成的简单需求:

  • 为传入任务轮询几个DB表(状态为1的行)
  • 处理上述行中的每一行并更新多个表,例如
    A、B和C
  • 这些更新可能是连续的和依赖的,即
    B
    C
    应该在
    A
    保存后更新,因为以后需要该信息
  • 以下是对
    B
    C
    的限制:
    B
    将使用
    A
    的id加上使用轮询找到的行中的信息
  • 在步骤1中设置
    状态
    标志。至
    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" />