我发现了一个我不完全理解的 xml 配置的入站适配器示例。配置指定REST请求设置请求方法、消费格式等。
我认为从 Spring Integration 的角度来看,响应应该更重要,因为响应是真正提供消息通道的东西。我对吗?
HTTP 入站适配器用作消息端点(实际上是消息起点),它调用 HTTP 请求 - REST 服务的 URL,比如“http://myRest/transfer/next” - 向 SI 消息通道提供结果. 那正确吗?
要么很难找到一个例子,要么很难将其他例子转换成满足我需求的东西。更多的例子是 XML 配置的,而我想用 Java 或 Dsl 配置。
我正在寻找一个调用 REST 服务(我将提供)的示例,该服务返回TransferRequest
我的对象的 JSON 表示,该对象被馈送到 SI 通道“transfer_next_channel”以由消息处理程序处理。
我的代码方法有点像骨架。我需要做什么?
@Bean
public IntegrationFlow httpInboundFlow() {
return IntegrationFlows
.from(Http.inboundChannelAdapter("http://myRest/transfer/next")
.requestMapping(r -> r
.methods(HttpMethod.GET)
.consumes("text/html"))
.requestPayloadType(TransferRequest.class)
.headerMapper(myHeaderMapper)
)
.channel("transfer_next_channel")
.get();
}
@Bean
@ServiceActivator(inputChannel = "transfer_next_channel")
public MessageHandler handler() {
return new MessageHandler() {
@Override
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println("myHandler: " + message.getPayload());
System.out.println("myHandler: " + message.getHeaders());
}
};
}
编辑 1
整个过程是通过 TCP/IP 从持久 DB 状态生成一个人的数据消息到字符串消息。首先是需要什么信息的信息。它是通过外部 REST 服务提供的。结果是一个TransferRequest
实体。由此必须生成消息:另一个外部 REST 服务调用以转换TransferRequest
为某种DataMessage
所需的数据消息。一旦 TCP/IP 客户端连接,该结果将通过 TCP/IP 服务器传递。
编辑 2
消息通道是:从对外部服务的请求“http://myRest/transfer/next”开始,获取TransferRequest
(包含一个personId
),将其作为消息推送到通道中,transformer/handler 以请求(另一个)外部服务“ http://myRest/message/{personId}",获取DataMessage
,将其作为消息推送到另一个通道,处理程序将消息推送到 TcpOutboundGateway 以被外部系统接收。