Solucionar problemas de armazenamento de pontos de verificação

Este artigo discute problemas com o uso do Armazenamento de Blobs como um armazenamento de ponto de verificação.

Problemas com o uso do Armazenamento de Blobs como um armazenamento de ponto de verificação

Você pode ver problemas ao usar uma conta de armazenamento de blob como um armazenamento de ponto de verificação relacionados a atrasos no processamento ou falhas na criação de pontos de verificação ao usar o SDK, etc.

Siga estas recomendações ao usar o Armazenamento de Blobs do Azure como um armazenamento de ponto de verificação:

  • Use um contêiner separado para cada grupo de consumidores. Você pode usar a mesma conta de armazenamento, mas usar um contêiner por cada grupo.
  • Não use o contêiner para mais nada e não use a conta de armazenamento para mais nada.
  • A conta de armazenamento deve estar na mesma região em que o aplicativo implantado está localizado. Se o aplicativo for local, tente escolher a região mais próxima possível.

Na página Conta de armazenamento no portal do Azure, na seção Serviço de Blob, verifique se as configurações a seguir estão desabilitadas.

  • Espaço de nomes hierárquico
  • Eliminação de forma recuperável de blobs
  • Controlo de Versão

Usando o armazenamento de ponto de verificação do Armazenamento de Blob no Azure Stack Hub

Se você estiver usando o Armazenamento de Blobs do Azure como o armazenamento de ponto de verificação em um ambiente que ofereça suporte a uma versão do SDK de Blob de Armazenamento diferente das normalmente disponíveis no Azure, precisará usar o código para alterar a versão da API do serviço de Armazenamento para a versão específica suportada por esse ambiente. Por exemplo, se você estiver executando Hubs de Eventos em um Azure Stack Hub versão 2002, a versão mais alta disponível para o serviço de Armazenamento é a versão 2017-11-09. Nesse caso, você precisa usar o código para direcionar a versão da API do serviço de armazenamento para 2017-11-09. Para obter um exemplo de como direcionar uma versão específica da API de armazenamento, consulte estes exemplos no GitHub:

Se você executar o recetor de Hubs de Eventos que usa o Armazenamento de Blob como o armazenamento de ponto de verificação sem direcionar a versão que o Hub de Pilha do Azure suporta, você receber a seguinte mensagem de erro:

The value for one of the HTTP headers is not in the correct format

Mensagem de erro de exemplo em Python

Para Python, um erro de é passado para o manipulador de erros de azure.core.exceptions.HttpResponseErrorEventHubConsumerClient.receive().on_error(partition_context, error) Mas, o método receive() não levanta uma exceção. print(error) Imprime as seguintes informações de exceção:

The value for one of the HTTP headers is not in the correct format.

RequestId:f048aee8-a90c-08ba-4ce1-e69dba759297
Time:2020-03-17T22:04:13.3559296Z
ErrorCode:InvalidHeaderValue
Error:None
HeaderName:x-ms-version
HeaderValue:2019-07-07

O registador regista dois avisos como os seguintes:

WARNING:azure.eventhub.extensions.checkpointstoreblobaio._blobstoragecsaio: 
An exception occurred during list_ownership for namespace '<namespace-name>.eventhub.<region>.azurestack.corp.microsoft.com' eventhub 'python-eh-test' consumer group '$Default'. 

Exception is HttpResponseError('The value for one of the HTTP headers is not in the correct format.\nRequestId:f048aee8-a90c-08ba-4ce1-e69dba759297\nTime:2020-03-17T22:04:13.3559296Z\nErrorCode:InvalidHeaderValue\nError:None\nHeaderName:x-ms-version\nHeaderValue:2019-07-07')

WARNING:azure.eventhub.aio._eventprocessor.event_processor:EventProcessor instance '26d84102-45b2-48a9-b7f4-da8916f68214' of eventhub 'python-eh-test' consumer group '$Default'. An error occurred while load-balancing and claiming ownership. 

The exception is HttpResponseError('The value for one of the HTTP headers is not in the correct format.\nRequestId:f048aee8-a90c-08ba-4ce1-e69dba759297\nTime:2020-03-17T22:04:13.3559296Z\nErrorCode:InvalidHeaderValue\nError:None\nHeaderName:x-ms-version\nHeaderValue:2019-07-07'). Retrying after 71.45254944090853 seconds

Próximos passos

Consulte o seguinte artigo Saiba mais sobre particionamento e ponto de verificação: Equilibre a carga de partição em várias instâncias do seu aplicativo