Spring 集成 Java DSL - 如何调用 int-http:outbound-gateway?
Spring Integration Java DSL - How to invoke int-http:outbound-gateway?
我在进行 ReST API 调用的流程中有一块:
<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"/>
我正在尝试使用 Java DSL 复制它,但找不到足够的文档。任何帮助将不胜感激。
好的,Spring 集成 Java DSL 还没有为 HTTP 提供命名空间工厂。
无论如何,我们可以继续使用它的通用组件来做到这一点:
@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();
}
从另一方面,提到的文档演示了完全用于 HttpRequestHandlingMessagingGateway
...
的样本
更新
顺便说一句:随时提出 JIRA 票以向 Java DSL 添加 HTTP 支持。
我在进行 ReST API 调用的流程中有一块:
<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"/>
我正在尝试使用 Java DSL 复制它,但找不到足够的文档。任何帮助将不胜感激。
好的,Spring 集成 Java DSL 还没有为 HTTP 提供命名空间工厂。
无论如何,我们可以继续使用它的通用组件来做到这一点:
@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();
}
从另一方面,提到的文档演示了完全用于 HttpRequestHandlingMessagingGateway
...
更新
顺便说一句:随时提出 JIRA 票以向 Java DSL 添加 HTTP 支持。