Implementar uma política de repetição com Java
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 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 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 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 ao ajustar os valores dessas propriedades de acordo com as necessidades do seu aplicativo.
Propriedade | Type | Descrição | Valor padrão |
---|---|---|---|
retryPolicyType |
RetryPolicyType | Opcional. A abordagem a ser usada para calcular atrasos de repetição. | EXPONENCIAL |
maxTries |
Inteiro | Opcional. O número máximo de tentativas de repetição antes da desistência. | 4 |
tryTimeoutInSeconds |
Inteiro | Opcional. Tempo máximo permitido antes que uma solicitação seja cancelada e presumida com falha. Observe que o tempo limite se aplica à solicitação de operação, não à operação geral de ponta a ponta. Este valor deve ser baseado na largura de banda disponível para o computador 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 previsto. | Integer.MAX_VALUE (segundos) |
retryDelayInMs |
Longo | Opcional. Especifica a quantidade de atraso a ser usada antes de tentar novamente uma operação. | 4 ms para EXPONENTIAL, 30 ms para FIXED |
maxRetryDelayInMs |
Longo | Opcional. Especifica o atraso máximo permitido antes de repetir uma operação. | 120ms |
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 |
No exemplo de código a seguir, configuramos as opções de repetição em uma instância de RequestRetryOptions e as passamos para BlobServiceClientBuilder
de modo a criar 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 do objeto BlobServiceClient
usa as opções de repetição, conforme definido na instância RequestRetryOptions
. 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.
Próximas etapas
- Este artigo faz parte do guia do desenvolvedor do Armazenamento de Blobs para Java. Veja a lista completa de artigos do guia do desenvolvedor em Como criar seu aplicativo.
- Para obter diretrizes arquitetônicas e práticas recomendadas gerais para políticas de repetição, confira Tratamento de falhas transitórias.
- Para obter diretrizes sobre como implementar um padrão de repetição para falhas transitórias, confira o padrão de Repetição.