Resolver los tiempos de espera de solicitudes de API salientes en AEM Publish
En este artículo se explica cómo abordar los problemas de tiempo de espera intermitente en la publicación de Adobe Experience Manager (AEM) al recuperar conjuntos de datos grandes de API externas, y se proporcionan estrategias para evitar errores de tiempo de espera en el nivel de plataforma.
Descripción description
Entorno
Publicación de Adobe Experience Manager (AEM) (todas las versiones, incluido AEM as a Cloud Service)
Síntomas
- Se producen tiempos de espera intermitentes cuando AEM Publish recupera conjuntos de datos grandes (como datos de inventario) de una API externa.
- La API externa tarda más que el tiempo de espera en el nivel de plataforma en devolver el primer byte, lo que provoca ServiceUnavailable o errores de tiempo de espera del primer byte.
- Estos tiempos de espera causan errores en el proceso de recuperación de datos.
Causa
AEM Publish aplica un tiempo de espera de nivel de plataforma en las conexiones HTTP salientes. Si una API externa responde lentamente, las solicitudes sincrónicas de AEM Publish superan este tiempo de espera, lo que provoca errores y errores en la recuperación de datos.
Resolución resolution
Siga los pasos a continuación para resolver el problema:
-
Revise la configuración del cliente HTTP en el código de publicación de AEM:
- Establezca tiempos de espera de conexión y lectura explícitos para solicitudes HTTP salientes a API externas. La plataforma exige un tiempo de espera global (por ejemplo: 10 segundos para la conexión y 60 segundos para la lectura) si el código no especifica sus propios tiempos de espera.
-
Optimice su integración para evitar llamadas sincrónicas de larga duración:
-
Solicitud de recuperación de inventario por lotes o paginación para que cada llamada de API individual procese un subconjunto más pequeño de datos y se complete bien dentro del tiempo de espera de la plataforma.
-
Por ejemplo, en lugar de solicitar todos los elementos de inventario en una sola llamada, solicite páginas más pequeñas (por ejemplo: 500 o 1000 elementos por llamada) y agregue los resultados según sea necesario.
-
-
Implemente el almacenamiento en caché o precalcule los datos de inventario siempre que sea posible:
- Almacene los datos de inventario a los que se accede con frecuencia en una caché o precalcule durante las horas de menor actividad para reducir la necesidad de realizar llamadas de API grandes y repetidas.
-
Mueva las extracciones de inventario de larga ejecución al procesamiento asincrónico:
- En lugar de hacer que la solicitud de página espere a la respuesta de la API de terceros, almacene en déclencheur las actualizaciones de inventario de forma asíncrona (por ejemplo, mediante trabajos programados o trabajadores en segundo plano) y ofrezca datos en caché o previamente recuperados a los usuarios finales.
-
Si necesita un tiempo de espera mayor del que permite la plataforma, rediseñe la integración para evitar llamadas sincrónicas de larga duración. No se admite el aumento del tiempo de espera en el nivel de plataforma.
-
Después de realizar estos cambios, compruebe que la recuperación del inventario se complete correctamente y que ya no se produzcan errores de tiempo de espera.