下面是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(“*”)
1条答案
按热度按时间ycl3bljg1#
我想你刚搬到
.channel(CHANNEL1).
而这一部分不起作用:
这个
.replyChannel(RESPONSE_CHANNEL)
我认为是出站网关。据我所知,http网关工作在同步,只是返回最后一个流值。在您的情况下,它的CHANNEL1最后一步