Share via


Risolvere i problemi relativi all'archivio dei checkpoint

Questo articolo illustra i problemi relativi all'uso di blob Archiviazione come archivio checkpoint.

Problemi relativi all'uso di blob Archiviazione come archivio checkpoint

Possono verificarsi problemi quando si usa un account di archiviazione BLOB come archivio checkpoint correlato a ritardi nell'elaborazione o errori di creazione di checkpoint quando si usa l'SDK e così via.

Seguire questi consigli quando si usa Archiviazione BLOB di Azure come archivio checkpoint:

  • Usare un contenitore separato per ogni gruppo di consumer. È possibile usare lo stesso account di archiviazione, ma usare un contenitore per ogni gruppo.
  • Non usare il contenitore per altri elementi e non usare l'account di archiviazione per altri elementi.
  • Archiviazione account deve trovarsi nella stessa area in cui si trova l'applicazione distribuita. Se l'applicazione è locale, provare a scegliere l'area più vicina possibile.

Nella pagina Archiviazione account della portale di Azure, nella sezione Servizio BLOB verificare che le impostazioni seguenti siano disabilitate.

  • Spazio dei nomi gerarchico
  • Eliminazione temporanea dei BLOB
  • Controllo delle versioni

Uso dell'archivio checkpoint Archiviazione BLOB nell'hub di Azure Stack

Se si usa Archiviazione BLOB di Azure come archivio di checkpoint in un ambiente che supporta una versione diversa di Archiviazione BLOB SDK rispetto a quelle in genere disponibili in Azure, è necessario usare il codice per modificare la versione dell'API del servizio Archiviazione alla versione specifica supportata da tale ambiente. Ad esempio, se si eseguono Hub eventi in un hub di Azure Stack versione 2002, la versione più recente disponibile per il servizio Archiviazione è la versione 2017-11-09. In questo caso, è necessario usare il codice per impostare come destinazione la versione dell'API del servizio Archiviazione alla versione 2017-11-09. Per un esempio di come specificare come destinazione una versione specifica dell'API Archiviazione, vedere questi esempi in GitHub:

Se si esegue il ricevitore di Hub eventi che usa blob Archiviazione come archivio checkpoint senza specificare come destinazione la versione supportata dall'hub di Azure Stack, viene visualizzato il messaggio di errore seguente:

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

Messaggio di errore di esempio in Python

Per Python, viene passato un errore di azure.core.exceptions.HttpResponseError al gestore on_error(partition_context, error) degli errori di EventHubConsumerClient.receive(). Tuttavia, il metodo receive() non genera un'eccezione. print(error) stampa le informazioni seguenti sull'eccezione:

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

Il logger registra due avvisi come quelli seguenti:

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

Passaggi successivi

Vedere l'articolo seguente su partizionamento e checkpoint: Bilanciare il carico delle partizioni tra più istanze dell'applicazione