Rozwiązywanie problemów z magazynem punktów kontrolnych

W tym artykule omówiono problemy z używaniem usługi Blob Storage jako magazynu punktów kontrolnych.

Problemy z używaniem usługi Blob Storage jako magazynu punktów kontrolnych

Problemy mogą wystąpić podczas korzystania z konta magazynu obiektów blob jako magazynu punktów kontrolnych, które są związane z opóźnieniami przetwarzania lub niepowodzeniami tworzenia punktów kontrolnych podczas korzystania z zestawu SDK itp.

Postępuj zgodnie z poniższymi zaleceniami w przypadku korzystania z usługi Azure Blob Storage jako magazynu punktów kontrolnych:

  • Użyj oddzielnego kontenera dla każdej grupy odbiorców. Możesz użyć tego samego konta magazynu, ale użyj jednego kontenera dla każdej grupy.
  • Nie używaj kontenera dla żadnych innych elementów i nie używaj konta magazynu dla innych elementów.
  • Konto magazynu powinno znajdować się w tym samym regionie co wdrożona aplikacja. Jeśli aplikacja jest lokalna, spróbuj wybrać możliwy region najbliżej.

Na stronie Konto magazynu w witrynie Azure Portal w sekcji Blob Service upewnij się, że następujące ustawienia są wyłączone.

  • Hierarchiczna przestrzeń nazw
  • Usuwanie nietrwałe obiektów blob
  • Wersje

Korzystanie z magazynu punktów kontrolnych usługi Blob Storage w usłudze Azure Stack Hub

Jeśli używasz usługi Azure Blob Storage jako magazynu punktów kontrolnych w środowisku, które obsługuje inną wersję zestawu SDK obiektów blob usługi Storage niż te, które są zwykle dostępne na platformie Azure, musisz użyć kodu, aby zmienić wersję interfejsu API usługi Storage na określoną wersję obsługiwaną przez to środowisko. Jeśli na przykład korzystasz z usługi Event Hubs w usłudze Azure Stack Hub w wersji 2002, najwyższa dostępna wersja usługi Storage to wersja 2017-11-09. W takim przypadku należy użyć kodu, aby zastosować docelową wersję interfejsu API usługi Storage do wersji 2017-11-09. Aby zapoznać się z przykładem sposobu kierowania określonej wersji interfejsu API usługi Storage, zobacz następujące przykłady w witrynie GitHub:

Jeśli uruchomisz odbiornik usługi Event Hubs, który używa usługi Blob Storage jako magazynu punktów kontrolnych bez określania wersji obsługiwanej przez usługę Azure Stack Hub, zostanie wyświetlony następujący komunikat o błędzie:

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

Przykładowy komunikat o błędzie w języku Python

W przypadku języka Python błąd azure.core.exceptions.HttpResponseError jest przekazywany do procedury obsługi on_error(partition_context, error) błędów programu EventHubConsumerClient.receive(). Jednak metoda receive() nie zgłasza wyjątku. print(error) Wyświetla następujące informacje o wyjątku:

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

Rejestrator rejestruje dwa ostrzeżenia podobne do następujących:

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

Następne kroki

Zapoznaj się z następującym artykułem na temat partycjonowania i tworzenia punktów kontrolnych: Równoważenie obciążenia partycji między wieloma wystąpieniami aplikacji