Spring integration 回复后我能收到原始信息吗

Spring integration 回复后我能收到原始信息吗,spring-integration,spring-integration-http,Spring Integration,Spring Integration Http,你能帮我做一下spring集成吗 我有一个集成流程,用于使用http向其他系统发送post请求 我可以在发送后获得原始消息,因为我想对成功和错误执行其他操作 ErrorHandler只有HttpClientResponse,但响应正文是空的,我需要原始消息来处理这种情况 同样的情况下,成功的回应。我没有原始消息信息,无法执行下一个操作 @Configuration public class IntegrationConfiguration { @Bean public Inte

你能帮我做一下spring集成吗

我有一个集成流程,用于使用http向其他系统发送post请求

我可以在发送后获得原始消息,因为我想对成功和错误执行其他操作

ErrorHandler只有HttpClientResponse,但响应正文是空的,我需要原始消息来处理这种情况

同样的情况下,成功的回应。我没有原始消息信息,无法执行下一个操作

@Configuration
public class IntegrationConfiguration {

    @Bean
    public IntegrationFlow incChannel(HeaderEnricher enrichHeaders,
                                      HttpRequestExecutingMessageHandler notifyOnArrival) {
        return IntegrationFlows
                .from("send_notify_to")
                .transform(enrichHeaders)
                .handle(notifyOnArrival)
                .channel("save_success_status_original")
                .get();
    }

    @Bean
    public HeaderEnricher enrichHeaders() {
        Map<String, ? extends HeaderValueMessageProcessor<?>> headersToAdd =
                Collections.singletonMap("Content-Type", new StaticHeaderValueMessageProcessor<>(APPLICATION_JSON_VALUE));
        HeaderEnricher enricher = new HeaderEnricher(headersToAdd);
        return enricher;
    }

    @Bean
    HttpRequestExecutingMessageHandler notifyOnArrival(@Value("${uri}") String uri,
                                                          MappingJackson2HttpMessageConverter messageConverter) {

        HttpRequestExecutingMessageHandler handler =
                new HttpRequestExecutingMessageHandler(uri + "/api/notify");
        handler.setHttpMethod(HttpMethod.POST);
        handler.setExpectReply(false);
        handler.setMessageConverters(Arrays.asList(messageConverter));
        return handler;
    }

}
@配置
公共类集成配置{
@豆子
渠道中的公共集成流(headerEnrichHeaders,
HttpRequestExecutingMessageHandler notifyOnArrival){
返回积分流
.发件人(“发送通知至”)
.transform(enrichHeaders)
.handle(notifyOnArrival)
.channel(“保存成功状态原始”)
.get();
}
@豆子
公共headerEnrichHeaders(){
映射
句柄(notifyOnArrival)
只是一个服务激活器,其中包含从请求到应答的所有状态。我们唯一需要的是确保我们真正提供了该状态。在消息上下文中保留状态的最佳位置是将请求消息存储到头中,然后在随后的应答中或从
错误消息中恢复它

headersToAdd.put("originalMesasge", new ExpressionEvaluatingHeaderValueMessageProcessor("#root", Message.class));

因此,您从请求消息中添加了
originalMesasge
,这个将由服务激活器逻辑复制到回复消息中。

谢谢,是的,我明白了。但它只开始与回复处理程序一起工作。setExpectReply(false);应该是true您可能需要查看是否可以为REST调用向端点添加表达式建议:我将HttpRequestExecutingMessageHandler更改为HTTP builder初始化,但它使用expectedReply初始化(false),并且此方法受保护,我无法调用它。为什么这样做?