3

我有一个系统,我正在考虑用 spring 集成来改造后端。

这个系统中的一些模式,看看使用多个请求和稍微不同的参数访问相同的 Web 服务和/或 HTTP 服务器(我都有)。然后将结果汇总在一起并呈现给用户

我让它在同步模式下成功工作,其中请求通过网关进入,被“拆分”为包含每个调用的键值的消息(用 A 调用,用 B 调用,用 XYZ 调用)。然后,每条消息都会发送到 HTTP 出站网关,进行调用并返回。然后将结果汇总在一起并通过网关运回。

我正在努力做的是异步进行这些 HTTP 调用。当前系统使用 Futures 在单独的线程中进行每个调用。我想要一个类似的模式。

我认为我需要做的是创建第二个网关,它包装了 HTTP 出站网关,并使用返回值来创建异步调用。但是,我不确定这将如何与聚合一起工作,并且感觉应该有一种更清洁的方式。我已经 3 年没有机会使用 Spring Integration,所以我正在尝试重新学习所有的东西。

我错过了什么,还是你需要这样做?

4

1 回答 1

3

您可以简单地制作频道(订阅出站网关的)ExecutorChannels(http://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#executor-channelhttp: //static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#channel-configuration-executorchannel)。

这样,每个请求都将在单独的线程上运行——聚合释放将发生在接收最终响应的线程上。您的原始线程将在网关中等待响应(或者您可以使用异步网关并等待 Future.

于 2012-12-21T17:00:28.007 回答