【发布时间】:2018-03-12 15:43:24
【问题描述】:
我们有一个基于 SOAP 的外部 Web 服务,该服务在提供 ID 时提供有关客户礼品卡余额的信息。此 ID 存储在我们的数据库中。
要求是找出所有标记了此 ID 的此类客户的余额,然后向他们发送电子邮件。该逻辑应该每隔一天作为计划作业运行一次。
当我们查询数据库时,我们发现有超过 5000 个这样的客户标记了这个 ID。不幸的是,网络服务不接受 ID 列表,并且只能在一次网络调用中提供有关单个客户的信息。
现在,我们怀疑循环 5000 个 Id 并在此循环中多次调用 Web 服务是否是个好主意。 作为测试运行,当我们为 500 个 Id 调用 Web 服务时,它在 3.7 分钟内完成,而 1000 个 Id 则为 7.25 分钟。通过这个度量,我们可以估计,对于 5000 个 Id,大约需要 40 分钟。
我们的 Web 应用程序是 JavaEE 6 堆栈,数据库是 Oracle。
有没有更好的方法来做到这一点?欢迎任何建议。 谢谢。
【问题讨论】:
-
使用多个线程并行执行调用?
-
对我来说,每隔一天 40 分钟听起来不错。你没有提到任何时序要求,所以我看不到任何优化原因。相反,我会考虑拆分工作,以便每隔几分钟完成一个请求,这样就不会在任何地方造成任何过载。
标签: java performance web-services jakarta-ee