【问题标题】:Message Headers is Spring Integration flow with subflowsMessage Headers 是带有子流的 Spring Integration 流
【发布时间】:2022-11-28 16:13:27
【问题描述】:

下面是主要的 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("*")

【问题讨论】:

    标签: java spring-boot spring-integration spring-integration-dsl spring-integration-http


    【解决方案1】:

    我想你只是搬到.channel(CHANNEL1).

    这部分不起作用:

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

    这个 .replyChannel(RESPONSE_CHANNEL) 我认为是出站网关。

    据我所知,http 网关同步工作,只返回最后一个流量值。在你的情况下,它是 CHANNEL1 最后一步

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多