消息头是具有子流的Spring集成流

jucafojl  于 2022-11-29  发布在  Spring
关注(0)|答案(1)|浏览(113)

下面是Spring Integration的主要流程,它通过HTTP接收请求,使用几个子流程处理请求,然后回复消费者。问题是当流程进入第一个子流程时,它实际上丢失了所有的头,包括回复通道。
我想知道请求中的头应该到达什么位置?到达流的末尾(RESPONSE_CHANNEL)?以及如何避免在进入子流后丢失头?

@Bean
public IntegrationFlow exampleFlow() {
  return IntegrationFlows.from(
      Http.inboundGateway("/conversions/lower")
          .requestMapping(r -> r.methods(HttpMethod.POST)
          .mappedRequestHeaders("*") 
          .requestPayloadType(Foo.class)
          .replyChannel(RESPONSE_CHANNEL)
          .mappedResponseHeaders("*")
        )
      .transform(this:transforFoo)
      .channel(CHANNEL1)
      .handle(fooFlowConfiguration.flowHandler())
//several handlers in another subflow 
      .channel(RESPONSE_CHANNEL)
      .get();
}

我尝试在流结束之前丰富标头,但没有帮助并尝试添加.mappedResponseHeaders(“*”)

ycl3bljg

ycl3bljg1#

我想你刚搬到.channel(CHANNEL1).
而这一部分不起作用:

handle(fooFlowConfiguration.flowHandler())
//several handlers in another subflow 
      .channel(RESPONSE_CHANNEL)

这个.replyChannel(RESPONSE_CHANNEL)我认为是出站网关。
据我所知,http网关工作在同步,只是返回最后一个流值。在您的情况下,它的CHANNEL1最后一步

相关问题