Felsöka problem med kontrollpunktsarkiv

I den här artikeln beskrivs problem med att använda Blob Storage som kontrollpunktslager.

Problem med att använda Blob Storage som kontrollpunktslager

Du kan se problem när du använder ett bloblagringskonto som ett kontrollpunktslager som är relaterat till fördröjningar i bearbetningen, eller om det inte går att skapa kontrollpunkter när du använder SDK osv.

Följ dessa rekommendationer när du använder Azure Blob Storage som kontrollpunktslager:

  • Använd en separat container för varje konsumentgrupp. Du kan använda samma lagringskonto, men använda en container per grupp.
  • Använd inte containern för något annat och använd inte lagringskontot för något annat.
  • Lagringskontot ska finnas i samma region som det distribuerade programmet finns i. Om programmet är lokalt kan du försöka välja den region som är närmast.

På sidan Lagringskonto i Azure-portalen i avsnittet Blob Service kontrollerar du att följande inställningar är inaktiverade.

  • Hierarkisk namnrymd
  • Mjuk borttagning av blob
  • Versionshantering

Använda Blob Storage-kontrollpunktslager på Azure Stack Hub

Om du använder Azure Blob Storage som kontrollpunktslager i en miljö som har stöd för en annan version av Storage Blob SDK än de som vanligtvis är tillgängliga i Azure, måste du använda kod för att ändra STORAGE-tjänstens API-version till den specifika version som stöds av den miljön. Om du till exempel kör Event Hubs på en Azure Stack Hub-version 2002 är den högsta tillgängliga versionen för lagringstjänsten version 2017-11-09. I det här fallet måste du använda kod för att rikta api-versionen för lagringstjänsten till 2017-11-09. Ett exempel på hur du riktar in dig på en specifik storage API-version finns i följande exempel på GitHub:

Om du kör Event Hubs-mottagare som använder Blob Storage som kontrollpunktsarkiv utan att rikta in dig på den version som Azure Stack Hub stöder får du följande felmeddelande:

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

Exempel på felmeddelande i Python

För Python skickas azure.core.exceptions.HttpResponseError ett fel för till felhanteraren on_error(partition_context, error)EventHubConsumerClient.receive()för . Men metoden receive() skapar inget undantag. print(error) skriver ut följande undantagsinformation:

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

Loggaren loggar två varningar som följande:

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

Nästa steg

Läs följande artikel om partitionering och kontrollpunkter: Balansera partitionsbelastning över flera instanser av ditt program