【发布时间】:2014-12-20 09:00:32
【问题描述】:
我目前有一个入站 https 网关。在对来自 http 网关的请求的内部处理中,我调用了多个 http web 服务。目前,当我从调试点监视时,如果我从发布-订阅通道调用 4 个 Web 服务,它们将一个接一个地执行。然后在 4 个服务被一个一个调用之后,它们被聚合并返回一个响应。这里的问题是可能有 N 次调用,所以本质上可能只有 2 个 http Web 服务调用,甚至可能有 100 个。为了解决这个问题,我在发布 subsce 通道中添加了一个任务执行器关注
<int:publish-subscribe-channel id="ta-htl-data-router-channel" apply-sequence="true" task-executor="pool" />
<task:executor id="pool" pool-size="10"/>
然后,当 web 路由器通道订阅者同步执行时,http 入站网关停止正常工作,即我收到以下错误消息
Reply message received but the receiving thread has already received a reply
我得到一个响应 json 字符串来下载,而不是在浏览器中显示为响应。
如何异步调用多个外部 Web 服务并将聚合响应发送到 http 入站网关。因此,虽然整个 http 入站网关请求到响应是同步发生的,但内部多个外部 Web 服务的调用却是异步发生的,以减少处理时间。
【问题讨论】:
标签: java multithreading spring asynchronous spring-integration