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