Spring Integration Java DSL - How to invoke int-http:outbound-gateway?

爱⌒轻易说出口 提交于 2019-12-10 17:35:47

问题


I have a piece in the flow where a ReST API call is made:

<int:channel id="requestChannel"/>

<int-http:outbound-gateway request-channel="requestChannel"
                           reply-channel="logger"
                           url="${api.base.uri}/data"
                           http-method="PUT"
                           expected-response-type="java.lang.String"/>

<int:logging-channel-adapter id="logger"
                             logger-name="logger"
                             expression="payload"
                             level="INFO"/>

I'm trying to replicate this using Java DSL but could not find adequate documentation. Any help would be much appreciated.


回答1:


Right, Spring Integration Java DSL doesn't provide the Namespace Factory for HTTP, yet.

Anyway we can go ahead and do that using its generic components:

    @Bean
    public MessageHandler logger() {
        LoggingHandler loggingHandler = new LoggingHandler("INFO");
        loggingHandler.setLoggerName("logger");
        // This is redundant because the default expression is exactly "payload"
        // loggingHandler.setExpression("payload");
        return loggingHandler;
    }

    @Bean
    public MessageHandler httpGateway(@Value("${api.base.uri}/data") URI uri) {
        HttpRequestExecutingMessageHandler httpHandler = new HttpRequestExecutingMessageHandler(uri);
        httpHandler.setExpectedResponseType(String.class);
        httpHandler.setHttpMethod(HttpMethod.PUT);
        return httpHandler;
    }

    @Bean
    public IntegrationFlow httpFlow(MessageHandler httpGateway) {
        return IntegrationFlows.from("requestChannel")
                .handle(httpGateway)
                .handle(logger())
                .get();
    }

From other side the mentioned documentation demonstrate the sample exactly for the HttpRequestHandlingMessagingGateway...

UPDATE

By the way: feel free to raise a JIRA ticket for adding HTTP support to the Java DSL.



来源:https://stackoverflow.com/questions/31825508/spring-integration-java-dsl-how-to-invoke-int-httpoutbound-gateway

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!