Partilhar via


Implementar uma política de repetição com JavaScript ou TypeScript

Qualquer aplicativo que seja executado na nuvem ou se comunique com serviços e recursos remotos deve ser capaz de lidar com falhas transitórias. É comum que esses aplicativos apresentem falhas devido a uma perda momentânea de conectividade de rede, um tempo limite de solicitação quando um serviço ou recurso está ocupado ou outros fatores. Os desenvolvedores devem criar aplicativos para lidar com falhas transitórias de forma transparente para melhorar a estabilidade e a resiliência.

Neste artigo, você aprenderá a usar a biblioteca de cliente do Armazenamento do Azure para JavaScript para configurar uma política de repetição para um aplicativo que se conecta ao Armazenamento de Blobs do Azure. As políticas de repetição definem como o aplicativo lida com solicitações com falha e devem sempre ser ajustadas para corresponder aos requisitos de negócios do aplicativo e à natureza da falha.

Configurar opções de repetição

As políticas de repetição para armazenamento de Blob são configuradas programaticamente, oferecendo controle sobre como as opções de repetição são aplicadas a várias solicitações de serviço e cenários. Por exemplo, um aplicativo Web que emite solicitações com base na interação do usuário pode implementar uma política com menos tentativas e atrasos mais curtos para aumentar a capacidade de resposta e notificar o usuário quando ocorre um erro. Como alternativa, um aplicativo ou componente executando solicitações em lote em segundo plano pode aumentar o número de novas tentativas e usar uma estratégia de recuo exponencial para permitir que a solicitação seja concluída com êxito.

A tabela a seguir lista os parâmetros disponíveis ao criar uma instância StorageRetryOptions , juntamente com o tipo, uma breve descrição e o valor padrão se você não fizer alterações. Você deve ser proativo no ajuste dos valores dessas propriedades para atender às necessidades do seu aplicativo.

Propriedade Type Description Default value
maxRetryDelayInMs number Opcional. Especifica o atraso máximo permitido antes de tentar novamente uma operação. 120 segundos (ou 120 * 1000 ms)
maxTries number Opcional. O número máximo de tentativas antes de desistir. 4
retryDelayInMs number Opcional. Especifica a quantidade de atraso a ser usada antes de tentar novamente uma operação. 4 segundos (ou 4 * 1000 ms)
retryPolicyType StorageRetryPolicyType Opcional. StorageRetryPolicyType, o padrão é a política de repetição exponencial. StorageRetryPolicyType.Exponential
secondaryHost string Opcional. Ponto de extremidade da conta de armazenamento secundária contra o qual as solicitações podem ser repetidas. Antes de definir esse valor, você deve entender os problemas relacionados à leitura de dados obsoletos e potencialmente inconsistentes. Para saber mais, consulte Usar redundância geográfica para projetar aplicativos altamente disponíveis. Nenhuma
tryTimeoutInMs number Opcional. Tempo máximo permitido antes que uma solicitação seja cancelada e presumida falha. Esse tempo limite se aplica à solicitação de operação e deve ser baseado na largura de banda disponível para a máquina host e na proximidade do serviço de armazenamento. Um valor de 0 ou indefinido resulta em nenhum tempo limite padrão no cliente e o tempo limite padrão do lado do servidor é usado. Para saber mais, consulte Tempos limite para operações de serviço de Blob.

No exemplo de código a seguir, configuramos as opções de repetição em uma instância de StorageRetryOptions, passamos para uma nova instância StoragePipelineOptions e passamos pipeline ao instanciar 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
);

Neste exemplo, cada solicitação de serviço emitida a partir do BlobServiceClient objeto usa as opções de repetição conforme definido em retryOptions. Esta política aplica-se aos pedidos dos clientes. Você pode configurar várias estratégias de repetição para clientes de serviço com base nas necessidades do seu aplicativo.

  • Para obter orientação de arquitetura e práticas recomendadas gerais para políticas de repetição, consulte Tratamento de falhas transitórias.
  • Para obter orientação sobre como implementar um padrão de repetição para falhas transitórias, consulte Padrão de nova tentativa.