Compartir a través de


Implementación de una directiva de reintento con JavaScript o TypeScript

Cualquier aplicación que se ejecute en la nube o que se comunique con servicios y recursos remotos debe ser capaz de controlar errores transitorios. Es habitual que estas aplicaciones experimenten errores debido a una pérdida momentánea de conectividad de red, el agotamiento del tiempo de espera de una solicitud cuando un servicio o recurso está ocupado u otros factores. Los desarrolladores deben compilar aplicaciones que controlen los errores transitorios de forma transparente para mejorar la estabilidad y la resistencia.

En este artículo, aprenderá a usar la biblioteca cliente de Azure Storage para JavaScript para configurar una directiva de reintentos para una aplicación que se conecta a Azure Blob Storage. Las directivas de reintentos definen de qué forma la aplicación controla las solicitudes con errores y siempre se deben adaptar para que ajusten a los requisitos empresariales de la aplicación y la naturaleza del error.

Configuración de las opciones de reintento

Las directivas de reintentos para Blob Storage se configuran mediante programación, lo que ofrece control sobre cómo se aplican las opciones de reintento a varias solicitudes y escenarios de servicio. Por ejemplo, una aplicación web que emite solicitudes basadas en la interacción del usuario podría implementar una directiva con menos reintentos y retrasos más cortos para aumentar la capacidad de respuesta y notificar los errores a los usuarios. Por otro lado, una aplicación o componente que ejecuta solicitudes por lotes en segundo plano podría aumentar el número de reintentos y usar una estrategia de retroceso exponencial para permitir que la solicitud se complete correctamente.

En la tabla siguiente, se enumeran los parámetros disponibles al crear una instancia de StorageRetryOptions, junto con el tipo, una breve descripción y el valor predeterminado si no se realiza ningún cambio. Debe ser proactivo al ajustar los valores de estas propiedades para satisfacer las necesidades de la aplicación.

Propiedad Tipo Descripción Default value
maxRetryDelayInMs number Opcional. Especifica el retraso máximo permitido antes de volver a intentar una operación. 120 segundos (o 120 * 1000 ms)
maxTries number Opcional. Número máximo de reintentos antes de abandonar. 4
retryDelayInMs number Opcional. Especifica la cantidad de retraso que se usará antes de volver a intentar una operación. 4 segundos (o 4 * 1000 ms)
retryPolicyType StorageRetryPolicyType Opcional. StorageRetryPolicyType, el valor predeterminado es la directiva de reintento exponencial. StorageRetryPolicyType.Exponential
secondaryHost string Opcional. Punto de conexión de la cuenta de almacenamiento secundario para reintentar las solicitudes. Antes de establecer este valor, debería comprender los problemas relacionados con la lectura de datos obsoletos y potencialmente incoherentes. Para obtener más información, consulte Uso de redundancia geográfica para diseñar aplicaciones de alta disponibilidad. None
tryTimeoutInMs number Opcional. Tiempo máximo permitido antes de que se cancele una solicitud y se asuma que se produjo un error. Este tiempo de espera se aplica a la solicitud de operación y debe basarse en el ancho de banda disponible para el equipo host y la proximidad al servicio Storage. Un valor de 0 o undefined no da como resultado ningún tiempo de espera predeterminado en el cliente y se usa el tiempo de espera predeterminado del lado servidor. Para más información, consulte Tiempos de espera para las operaciones de Blob Service.

En el ejemplo de código siguiente, se configuran las opciones de reintento en una instancia de StorageRetryOptions, se pasan a una nueva instancia de StoragePipelineOptions y pasan pipeline al crear instancias de BlobServiceClient:

const options = {
  retryOptions: {
    maxTries: 4,
    retryDelayInMs: 3 * 1000,
    maxRetryDelayInMs: 120 * 1000,
    retryPolicyType: StorageRetryPolicyType.EXPONENTIAL
  },
};

const pipeline = newPipeline(credential, options);

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  credential,
  pipeline
);

En este ejemplo, cada solicitud de servicio emitida desde el objeto BlobServiceClient usa las opciones de reintento definidas en retryOptions. Esta directiva se aplica a las solicitudes de cliente. Puede configurar varias estrategias de reintento para los clientes de servicio en función de las necesidades de la aplicación.

  • Si quiere obtener instrucciones de arquitectura y procedimientos recomendados generales para las directivas de reintento, consulte Control de errores transitorios.
  • Para obtener instrucciones sobre cómo implementar un patrón de reintento para errores transitorios, consulte Patrón de reintento.