【问题标题】:Spring Integration JAVA DSL Using original payload in a subsequent callSpring Integration JAVA DSL 在后续调用中使用原始有效负载
【发布时间】:2016-11-11 03:07:00
【问题描述】:

我正在使用 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");
}

【问题讨论】:

    标签: java spring spring-integration dsl


    【解决方案1】:

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

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

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

    但这就是你必须选择的。

    【讨论】:

    • 谢谢,我正在考虑使用 .enrichHeaders() 并填充标头并不是最好的方法,因为它将在 http 调用中使用该自定义标头。 .enrich() 必须在哪里使用?在进行 http 调用之前?
    • ??? DefaultHttpHeaderMapper 不映射自定义标题。需要了解您的 makeFirstHttpRequest() 定义。
    • 这是我用来拨打电话的处理程序:Http.outboundGateway(FIRST_CALL_URI).extractPayload(true).httpMethod(HttpMethod.POST).expectedResponseType(String.class).get(); 我应该使用其他处理程序吗?
    • 不,没关系。不确定“将在 http 调用中使用该自定义标头”的含义。请详细说明。
    • 刚刚在本地测试过.enrichHeaders(h -&gt; h.header("foo", "bar")).handleWithAdapter(a -&gt;a.httpGateway(...)),我在请求的HTTP标头中没有看到foo标头。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2022-07-11
    • 2015-10-27
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多