Spring integration 从新流调用现有流,然后继续使用新流

Spring integration 从新流调用现有流,然后继续使用新流,spring-integration,Spring Integration,我希望重用现有的流链,而不改变其预期负载,并从新流调用它。但是,我不知道如何在不丢失新流的有效负载的情况下调用现有流。所有这些都必须在一次交易中完成。我使用的是Spring集成DSL Lambdas。这是它的样子 Validation Flow B | Route / \ Error Flow Existing Validati

我希望重用现有的流链,而不改变其预期负载,并从新流调用它。但是,我不知道如何在不丢失新流的有效负载的情况下调用现有流。所有这些都必须在一次交易中完成。我使用的是Spring集成DSL Lambdas。这是它的样子

            Validation Flow B
                     |
                   Route
                   /   \
         Error Flow    Existing Validation Flow A -- Existing Persist Flow A
                                                              |
                                  ----------------------------
                                  |
                           New Persist Flow B

在持久化流A成功后,我想继续将原始有效负载从验证流B保存到持久化流B。我应该将其保存在标头中吗?我知道如何在标题中设置值。如何使用DSL在报头中设置有效负载。或者有没有一种方法可以使用DSL在报头而不是有效负载中存储声明检查?

有几种技术和组件可以从一个流调用另一个流。所有的概念和原则都来源于原创

其中之一是
.gateway()
,当您向请求通道发送消息并等待来自该子流或另一个流的答复时。但是在这种情况下,
应答
成为主流中下一个端点的
有效负载

另一个组件是
.increment()
,其中的操作与
.gateway()
几乎相同,但将根据回复来充实现有的
有效负载
标题
。我认为对于您的用例,如果您想继续使用相同的
负载
,您可以省略
标题
属性

无论如何,我要说的是,您的用例看起来像是
.publishSubscribebeChannel()
,具有两个订阅者,用于相同的
负载。其中,现有流应作为第一个订户,新流应作为第二个订户。应在没有任何
执行器的情况下配置所有内容(默认设置),因此,只有在成功完成第一个流后才会调用第二个流

您可以在
标题中存储
有效负载
,如:

.enrichHeaders(h ->
        h.headerFunction("originalPayload", Message::getPayload))

感谢您将有效负载添加到前面提到的标题。如果这回答了您的问题,那么在这里看到接受并赢得良好声誉将是非常棒的。