I have a piece in the flow where a ReST API call is made:
reply-channel="logger"
url="${api.base.uri}/data"
http-method="PUT"
expected-response-type="java.lang.String"/>
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.
解决方案
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.