Spring integration 跟踪异步服务激活器的进度
我有一个spring集成流,它以特定的顺序调用特定的组件。在最后一个阶段,通过使用Spring integration 跟踪异步服务激活器的进度,spring-integration,Spring Integration,我有一个spring集成流,它以特定的顺序调用特定的组件。在最后一个阶段,通过使用发布-订阅通道上的任务执行器并行调用3个组件 <int:publish-subscribe-channel id="pubSubChannel" task-executor="executor" /> <int:service-activator id="configure1" input-channel="pubSubChannel"> <bean clas
发布-订阅通道上的任务执行器
并行调用3个组件
<int:publish-subscribe-channel id="pubSubChannel"
task-executor="executor" />
<int:service-activator id="configure1"
input-channel="pubSubChannel">
<bean class="..." />
</int:service-activator>
<int:service-activator id="configure2"
input-channel="pubSubChannel">
<bean class="..." />
</int:service-activator>
<int:service-activator id="configure3"
input-channel="pubSubChannel">
<bean class="..." />
</int:service-activator>
我想知道所有这些组件何时都完成了工作,以在正在处理的项目上标记某种成功完成状态
什么spring集成组件或模式可以帮助我实现这一点
我想跟踪所有3个组件是否都已完成且没有错误,并且我想等待所有3个组件完成
几乎就像此流程之后的一个通道,它接收所有3条消息,并能够跟踪哪个消息来自哪个激活器/通道,以了解何时所有3条消息都已接收且工作已完成。PublishSubscribeChannel
具有applySequence
选项,可以将其打开为真
然后,PublishSubscribeChannel
向每个订阅者发送带有secunecedtails
标题的消息
(默认情况下)可以参考这些标题,形成一个消息组
,并在所有序列到达
后生成结果
您可以在参考手册中找到有关此问题的更多信息。PublishSubscribeChannel
具有applySequence
选项,可以将其打开为true
然后,PublishSubscribeChannel
向每个订阅者发送带有secunecedtails
标题的消息
(默认情况下)可以参考这些标题,形成一个消息组
,并在所有序列到达
后生成结果
您可以在参考手册中找到有关此问题的更多信息。Sine
apply sequence
创建新消息并使用新的相关id
,是否有方法指定或覆盖发布订户频道使用的相关id。我已尝试在此频道之前设置相关id,但由于生成了一条新消息,它也会创建一个新的相关id。不,您不能。我找不到(目前)的论据来解释这个问题没有定制化的原因。但是,您是否介意分享一个问题,为什么基于传入消息id
的默认算法对您来说是不够的?让我理解一下-因此,如果我有两条消息进入发布-订阅通道,听起来好像会生成两个唯一的相关id,这样我的聚合器应该能够识别这两个组(可能来自6条消息)然后在每个组的序列号与序列大小匹配时释放它们。如果是这种情况,那么我认为我可以。是的。这是正确的。发布-订阅通道使用传入消息的I'd作为传出消息的correlationKey。聚合器将知道为此构建哪个组。最后,您将有一个关联赌注在一条请求消息和该消息的回复组之间。谢谢,这很有意义。对于此release strategy expression=“[0]”而言,这似乎是一个有效的发布策略表达式。headers.sequenceNumber=[0]。headers.sequenceSize“
。我从参考手册中获得了此消息,但我不确定为什么[0](集合中的第一条消息)其次,它实际上不起作用。聚合器没有使用此表达式发布消息。ineapply sequence
创建新消息并使用新的相关id
,是否有方法指定或覆盖发布订户频道使用的相关id。在此之前,我已尝试设置相关id但由于生成了一条新消息,它也会创建一个新的关联id。不,您不能。我还找不到解释原因的参数在此问题上没有自定义。但是您是否介意分享一个问题,为什么基于传入消息id
的默认算法对您来说不够?让我理解一下-因此,如果我有两条消息进入发布-订阅通道,听起来两个唯一的相关id将生成,以便我的聚合器能够识别这两个组(可能来自6条消息)然后在每个组的序列号与序列大小匹配时释放它们。如果是这种情况,那么我认为我可以。是的。这是正确的。发布-订阅通道使用传入消息的I'd作为传出消息的correlationKey。聚合器将知道为此构建哪个组。最后,您将有一个关联赌注在一条请求消息和该消息的回复组之间。谢谢,这很有意义。对于此release strategy expression=“[0]”而言,这似乎是一个有效的发布策略表达式。headers.sequenceNumber=[0]。headers.sequenceSize“
。我从参考手册中获得了此消息,但我不确定为什么[0](集合中的第一条消息)其次,它实际上不起作用。聚合器没有用这个表达式发布消息