我有一个系统,我正在考虑使用spring集成来改造后端。
这个系统中的一些模式,看看同一个Web服务和/或HTTP服务器(我有两个),多个请求和略有不同的参数。然后将结果汇总在一起并呈现给用户
我让它在同步模式下成功运行,其中请求通过网关进入,被“拆分”为包含每个呼叫的密钥值的消息(用A呼叫,用B呼叫,用XYZ呼叫)。然后,每条消息都会转到HTTP出站网关,进行调用并返回。然后将结果汇总在一起并通过网关发回。
我正在努力的是异步地进行这些HTTP调用。当前系统使用Futures在单独的线程中进行每次调用。我想要一个类似的模式。
我认为我需要做的是创建第二个网关,它封装HTTP出站网关,并使用返回值创建异步调用。但是,我不确定这对于聚合是如何工作的,而且它的一些感觉就像应该有一个更清洁的方式。我没有机会在3年内使用Spring Integration,所以我正在尝试重新学习所有的东西。
我错过了什么,或者这是你需要做的?
答案 0 :(得分:3)
您可以简单地制作频道(出站网关订阅的频道)ExecutorChannels(http://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#executor-channel和http://static.springsource.org/spring-integration/reference/html/messaging-channels-section.html#channel-configuration-executorchannel)。
这样,每个请求都将在一个单独的线程上运行 - 聚合版本将在接收最终响应的线程上发生。您的原始线程将在网关中等待响应(或者您可以使用异步网关并等待Future。