Spring 集成 JAVA DSL 在后续调用中使用原始负载
Spring Integration JAVA DSL Using original payload in a subsequent call
我正在使用 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");
}
一种方法是 .enrichHeaders()
并将原始 payload
放入一个自定义 header 中。因此下游,响应后,处理 header 以恢复原始 payload
.
另一种方法是 .enrich()
当您进行外部调用并使用来自回复的信息丰富原始消息时。
还有其他工具,例如 .routeToRecipients()
和 .publishSubscribeChannel()
,您可以将相同的消息发送到不同的 sub-flows 以获得不同的逻辑。
但这就是你必须选择的。
我正在使用 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");
}
一种方法是 .enrichHeaders()
并将原始 payload
放入一个自定义 header 中。因此下游,响应后,处理 header 以恢复原始 payload
.
另一种方法是 .enrich()
当您进行外部调用并使用来自回复的信息丰富原始消息时。
还有其他工具,例如 .routeToRecipients()
和 .publishSubscribeChannel()
,您可以将相同的消息发送到不同的 sub-flows 以获得不同的逻辑。
但这就是你必须选择的。