gpt4 book ai didi

java - Spring集成异步通信同步响应

转载 作者:行者123 更新时间:2023-12-01 12:22:50 24 4
gpt4 key购买 nike

我目前有一个入站 https 网关。在来自 http 网关的请求的内部处理中,我调用多个 http Web 服务。目前,正如我从调试点监控的那样,如果我从发布-订阅 channel 调用 4 个 Web 服务,它们会依次执行。然后,在一一调用 4 个服务后,它们将被聚合并返回响应。这里的问题是,可能有 N 次调用,因此本质上只能有 2 个 http Web 服务调用,甚至可能有 100 个。为了解决这个问题,我向发布 subsce channel 添加了一个任务执行器,如下所示如下

<int:publish-subscribe-channel id="ta-htl-data-router-channel" apply-sequence="true" task-executor="pool" />

<task:executor id="pool" pool-size="10"/>

然后,当 Web 路由器 channel 订阅者同步执行时,http 入站网关停止正常工作,即我收到以下错误消息

Reply message received but the receiving thread has already received a reply

我得到了一个要下载的响应 json 字符串,而不是将其作为响应显示在浏览器中。

如何异步调用多个外部 Web 服务并向 http 入站网关发送聚合响应。因此,虽然整个 http 入站网关请求到响应同步发生,但多个外部 Web 服务的调用在内部异步发生,以减少处理时间。

最佳答案

考虑使用rejection-policy="CALLER_RUNS"在您的<task:executor>上.

问题可能出在 long-running调用 Web 服务,如果您有超过 10 个并发任务,则所有其他任务将为 ABROTED默认情况下。

关于java - Spring集成异步通信同步响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com