Implementar uma política de repetição com Java
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 Java 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 construir uma instância RequestRetryOptions , 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 |
---|---|---|---|
retryPolicyType |
RetryPolicyType | Opcional. A abordagem a ser usada para calcular atrasos de repetição. | EXPONENCIAL |
maxTries |
Número inteiro | Opcional. O número máximo de tentativas antes de desistir. | 4 |
tryTimeoutInSeconds |
Número inteiro | Opcional. Tempo máximo permitido antes que uma solicitação seja cancelada e presumida falha. Observe que o tempo limite se aplica à solicitação de operação, não à operação geral de ponta a ponta. Esse valor deve ser baseado na largura de banda disponível para a máquina host e na proximidade com o serviço de armazenamento. Um bom ponto de partida pode ser 60 segundos por MB de tamanho de carga útil previsto. | Integer.MAX_VALUE (segundos) |
retryDelayInMs |
Longo | Opcional. Especifica a quantidade de atraso a ser usada antes de tentar novamente uma operação. | 4ms para EXPONENCIAL, 30ms para FIXO |
maxRetryDelayInMs |
Longo | Opcional. Especifica o atraso máximo permitido antes de tentar novamente uma operação. | 120ms |
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 |
No exemplo de código a seguir, configuramos as opções de repetição em uma instância de RequestRetryOptions e passamos para criar BlobServiceClientBuilder
um objeto cliente:
RequestRetryOptions retryOptions = new RequestRetryOptions(RetryPolicyType.FIXED, 2, 3, 1000L, 1500L, null);
BlobServiceClient client = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(credential)
.retryOptions(retryOptions)
.buildClient();
Neste exemplo, cada solicitação de serviço emitida a partir do BlobServiceClient
objeto usa as opções de repetição conforme definido na RequestRetryOptions
instância. 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.
Próximos passos
- Este artigo faz parte do guia do desenvolvedor do Armazenamento de Blobs para Java. Consulte a lista completa de artigos do guia do desenvolvedor em Crie 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.