Solucionar problemas do repositório de ponto de verificação
Este artigo discute problemas com o uso do Armazenamento de Blobs como um repositório de ponto de verificação.
Problemas com o uso do Armazenamento de Blobs como um repositório de ponto de verificação
Você pode ver problemas ao usar uma conta de armazenamento de blobs como um repositório de ponto de verificação relacionado a atrasos no processamento ou falhas ao criar pontos de verificação ao usar o SDK etc.
Siga estas recomendações ao usar Armazenamento de Blobs do Azure como um repositório 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 do portal do Azure, na seção serviço Blob, verifique se as seguintes configurações estão desabilitadas.
- Namespace hierárquico
- Exclusão temporária de blobs
- Controle de versão
Usando o repositório de ponto de verificação do Armazenamento de Blobs no Azure Stack Hub
Se você estiver usando o Armazenamento de Blobs do Azure como armazenamento de ponto de verificação em um ambiente que dá suporte a uma versão diferente de SDK do Blob de Armazenamento daquelas que normalmente estão disponíveis no Azure, você precisa usar o código para alterar a versão de API do serviço de Armazenamento para a versão compatível com esse ambiente. Por exemplo, se você está executando o Hubs de Eventos em uma versão 2002 do Azure Stack Hub, a versão mais recente disponível para o serviço de armazenamento é a 2017-11-09. Nesse caso, é necessário usar o código para direcionar a versão da API do serviço de Armazenamento para a 2017-11-09. Para saber como direcionar uma versão de API específica do Armazenamento, confira estes exemplos no GitHub:
- .NET
- Java.
- JavaScript ou TypeScript
- Python – Síncrono, Assíncrono
Se você executar o receptor dos Hubs de Eventos que usa o Armazenamento de Blobs como o armazenamento de ponto de verificação sem direcionar a versão à qual o Azure Stack Hub dá suporte, você vê a seguinte mensagem de erro:
The value for one of the HTTP headers is not in the correct format
Mensagem de erro de exemplo no Python
Para o Python, um erro de azure.core.exceptions.HttpResponseError
é passado para o manipulador de erro on_error(partition_context, error)
do EventHubConsumerClient.receive()
. No entanto, o método receive()
não gera 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 agente registra 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óximas etapas
Consulte o artigo a seguir para saber mais sobre particionamento e ponto de verificação: Balancear a carga da partição entre várias instâncias do aplicativo