Compartilhar via


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

Qualquer aplicativo executado na nuvem ou que se comunique com serviços e recursos remotos deve ser capaz de lidar com falhas transitórias. É comum que esses aplicativos sofram 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 clientes do Armazenamento do Microsoft 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 trata 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 do Armazenamento de Blobs são configuradas programaticamente, oferecendo controle sobre como as opções de repetição são aplicadas a várias solicitações e cenários de serviço. 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 ocorrer 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 retirada exponencial para permitir que o tempo da solicitação seja concluído 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 ao ajustar os valores dessas propriedades de acordo com as necessidades do seu aplicativo.

Propriedade Type Descrição Valor padrão
maxRetryDelayInMs number Opcional. Especifica o atraso máximo permitido antes de repetir uma operação. 120 segundos (ou 120 * 1000 ms)
maxTries number Opcional. O número máximo de tentativas de repetição antes da desistência. 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 de conta de armazenamento secundário para tentar novamente as solicitações. Antes de definir este valor, você deve entender os problemas em torno da leitura de dados obsoletos e potencialmente inconsistentes. Para saber mais, confira Uso da redundância geográfica para criar aplicativos altamente disponíveis Nenhum
tryTimeoutInMs number Opcional. Tempo máximo permitido antes que uma solicitação seja cancelada e presumida com falha. Esse tempo limite se aplica à solicitação de operação e deve ser baseado na largura de banda disponível para o computador host e na proximidade com o 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 servidor é usado. Para saber mais, consulte Tempos limite para operações de serviço Blob.

No exemplo de código a seguir, configuramos as opções de repetição em uma instância do 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 do objeto BlobServiceClient usa as opções de repetição definidas no retryOptions. Essa política se aplica a solicitações de cliente. Você pode configurar várias estratégias de repetição para clientes de serviço com base nas necessidades do seu aplicativo.