我使用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");
}
答案 0 :(得分:3)
一种方法是.enrichHeaders()
,并将原始payload
放入一个自定义标头中。因此,在响应之后,下游处理该标头以恢复原始payload
。
当您拨打外部电话并使用回复信息丰富原始讯息时,另一种方法是.enrich()
。
还有其他工具,例如.routeToRecipients()
和.publishSubscribeChannel()
,您可以将不同的子流发送到不同的子流中。
但这就是你必须选择的。