在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

请按照以下步骤解决问题:

  1. 在AEM发布代码中查看HTTP客户端配置:

    • 为外部API的出站HTTP请求设置显式连接和读取超时。 如果您的代码未指定自己的超时,则平台将强制实施全局超时(例如: 10秒​用于连接,60秒​用于读取)。
  2. 优化集成以避免长时间运行的同步调用:

    • 对清单检索请求进行批处理或分页,以便每个API调用处理较小的数据子集,并在平台超时窗口内很好地完成。

    • 例如,不是在一次调用中请求所有库存项目,而是请求较小的页面(例如:每次调用​ 500 ​或​ 1000 ​个项目)并根据需要聚合结果。

  3. 尽可能实施缓存或预计算清单数据:

    • 将经常访问的清单数据存储在缓存中,或在非高峰时间对其进行预计算,以减少对重复的大型API调用的需要。
  4. 将长期运行的清单提取移至异步处理:

    • 不要让页面请求等待第三方API响应,而是异步触发库存更新(例如:通过计划作业或后台工作程序),并向最终用户提供缓存或预获取的数据。
  5. 如果所需的超时时间长于平台允许的时间,请重新设计集成以避免同步的长期调用。 不支持增加平台级别的超时。

  6. 进行这些更改后,请验证库存检索是否成功完成,以及超时错误是否不再发生。

recommendation-more-help
experience-cloud-kcs-help-kbarticles