Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring集成:在某些事件集成功执行其任务后调用事件。_Java_Spring_Jpa_Spring Integration - Fatal编程技术网

Java Spring集成:在某些事件集成功执行其任务后调用事件。

Java Spring集成:在某些事件集成功执行其任务后调用事件。,java,spring,jpa,spring-integration,Java,Spring,Jpa,Spring Integration,我想在某组事件已执行其任务时执行一个事件。 例如 我有以下池事件 <int-jpa:inbound-channel-adapter id="eventForUpdateProject" channel="updateProjectRequest" entity-manager="entityManagerFactory" jpa-query="SELECT p FROM Project p WHERE p.sysProject.id IS NOT NULL AND p.sysProjec

我想在某组事件已执行其任务时执行一个事件。 例如

我有以下池事件

<int-jpa:inbound-channel-adapter id="eventForUpdateProject" channel="updateProjectRequest" entity-manager="entityManagerFactory" 
jpa-query="SELECT p FROM Project p WHERE p.sysProject.id IS NOT NULL AND p.sysProject.sysupdate != p.updatedAt">
    <int:poller fixed-rate="2000" >
        <int:transactional propagation="REQUIRED" transaction-manager="transactionManager"/>
    </int:poller>
</int-jpa:inbound-channel-adapter>

它激活了三项服务

<int:service-activator input-channel="updateProjectRequest" ref="S1"></int:service-activator>
<int:service-activator input-channel="updateProjectRequest" ref="S2"></int:service-activator>
<int:service-activator input-channel="updateProjectRequest" ref="S3"></int:service-activator>


现在我想在所有这些事件完成任务后触发第四个事件。你知道这是怎么可能的吗。

这类任务有几种技巧

  • ,当您的所有服务发送它们的结果以进行某种关联时。只有当
    发布策略
    满足要求时,才能在
    上执行组发布

  • 没有任何
    执行者
    ,并且您的所有服务都是订户。再加上你的第四个。虽然没有显示
    updateProjectRequest
    配置,但看起来这是您的情况。如果没有执行器,所有订阅者都会一个接一个地收到相同的消息:第二个订阅者只在第一个订阅者完成任务后才执行他的任务。因此,您的“第四个事件”将仅在所有先前事件之后触发

  • 与前面的方法具有类似的语义,但在几个连续通道上


  • 我认为第一个是最好的,因为您可以使用相同的
    ,但已经有了
    执行器,您的所有服务都将并行执行。即使您没有从这些服务返回任何内容,您也可以在同一个sync
    上模拟与一对服务激活器的聚合和关联,其中第一个是您真正的服务之一,第二个只是用于发送一些用于聚合的人工消息。所有这些
    都应该订阅async

    您提供的信息对我帮助很大,但仍然有些混乱,我无法理解“聚合器”中“相关性”的概念。你能解释一下吗?请看参考手册中的更多信息,谢谢。这有帮助。