在AEM Publish中解决出站API请求超时
本文介绍了在从外部API检索大型数据集时,如何在Adobe Experience Manager (AEM)发布中解决间歇性超时问题,并提供避免平台级超时错误的策略。
描述 description
环境
Adobe Experience Manager (AEM)发布(所有版本,包括AEM as a Cloud Service)
症状
- 当AEM Publish从外部API检索大型数据集(如库存数据)时,会发生间歇性超时。
- 外部API返回第一个字节所花费的时间比平台级别的超时时间长,这导致 ServiceUnavailable 或第一个字节超时错误。
- 这些超时会导致数据检索过程中失败。
原因
AEM发布对出站HTTP连接强制实施平台级别的超时。 如果外部API响应缓慢,则来自AEM Publish的同步请求将超过此超时,从而导致错误和数据检索失败。
解决方法 resolution
请按照以下步骤解决问题:
-
在AEM发布代码中查看HTTP客户端配置:
- 为外部API的出站HTTP请求设置显式连接和读取超时。 如果您的代码未指定自己的超时,则平台将强制实施全局超时(例如: 10秒用于连接,60秒用于读取)。
-
优化集成以避免长时间运行的同步调用:
-
对清单检索请求进行批处理或分页,以便每个API调用处理较小的数据子集,并在平台超时窗口内很好地完成。
-
例如,不是在一次调用中请求所有库存项目,而是请求较小的页面(例如:每次调用 500 或 1000 个项目)并根据需要聚合结果。
-
-
尽可能实施缓存或预计算清单数据:
- 将经常访问的清单数据存储在缓存中,或在非高峰时间对其进行预计算,以减少对重复的大型API调用的需要。
-
将长期运行的清单提取移至异步处理:
- 不要让页面请求等待第三方API响应,而是异步触发库存更新(例如:通过计划作业或后台工作程序),并向最终用户提供缓存或预获取的数据。
-
如果所需的超时时间长于平台允许的时间,请重新设计集成以避免同步的长期调用。 不支持增加平台级别的超时。
-
进行这些更改后,请验证库存检索是否成功完成,以及超时错误是否不再发生。
recommendation-more-help
experience-cloud-kcs-help-kbarticles