1

我们的应用程序集成流程定义为拆分器 -> ws 网关 -> 聚合器。拆分器将请求拆分为帐号列表;以便为每个帐号发起一个 Web 服务调用,并将来自多个 Web 服务调用的响应聚合在聚合器中。拆分器和 ws 网关之间的通道由调度程序“commonj WorkManagerTaskExecutor”定义,以便每个 Web 服务调用在不同的线程。

我们为每个 web 服务调用添加了超时。但是我们想为整个过程设置一个超时。即所有的 web 服务调用都应该在 50 秒内完成,而不是为每个单独的调用设置 50 秒超时。commonj WorkManagerTaskExecutor,直接通过代码实现时,通过waitForAll(Collection workItems, long timeout_ms)方法提供此功能。有没有办法使用这个或类似的功能来实现我们的要求。

4

1 回答 1

1

不幸的是,不,我们不能使用该特定TaskExecutor.

另一方面,如果您说“整个过程的单次超时”,我可以帮助您解决<gateway>模式:

<chain>
    <gateway request-channel="splitterChannel" reply-timeout="50000"/>
</chain>

在哪里reply-timeout

指定此网关在返回之前等待回复消息的时间。默认情况下,它将无限期地等待。如果网关超时,则返回“null”。

这对你有意义吗?

于 2015-08-26T15:23:10.273 回答