Spring Integration JAVA DSL在后续调用中使用原始有效负载

时间:2016-07-08 13:54:50

标签: java spring spring-integration dsl

我使用spring集成来定义一个将执行两项操作的流程 - 首先使用给定的有效负载执行http调用,然后使用提供的响应和原始有效负载进行另一次http调用。

如何实现这一目标?在下面的代码中,我能够使用和修改第一个有效负载并在firstHttpRequest中使用它,但是如何将原始有效负载与firstHttpRequest的响应一起使用?

有什么好的做法吗?

@Bean
public IntegrationFlow makeHttpCalls(){

    return message -> message               
             .transform(new GenericTransformer<Message<String>, String>() {
                    @Override
                    public String transform(Message<String> message){
                            return message.getPayload() + " first call";    
                    }    
             })
             .handle(makeFirstHttpRequest())
             .transform(new GenericTransformer<Message<String>, String>() {
                @Override
                public String transform(Message<String> message) {
                    logger.debug("Response from transform: " + message);
                    return message.getPayload();
                }
             }) 
            .handle(makeSecondHttpRequest())
            .channel("entrypoint");
}

1 个答案:

答案 0 :(得分:3)

一种方法是.enrichHeaders(),并将原始payload放入一个自定义标头中。因此,在响应之后,下游处理该标头以恢复原始payload

当您拨打外部电话并使用回复信息丰富原始讯息时,另一种方法是.enrich()

还有其他工具,例如.routeToRecipients().publishSubscribeChannel(),您可以将不同的子流发送到不同的子流中。

但这就是你必须选择的。