共用方式為


針對檢查點存放區問題進行疑難解答

本文討論使用 Blob 儲存體作為檢查點存放區的問題。

使用 Blob 儲存體作為檢查點存放區的問題

使用 Blob 儲存體帳戶做為處理延遲的檢查點存放區,或使用 SDK 等時建立檢查點失敗時,您可能會看到問題。

使用 Azure Blob 儲存體作為檢查點存放區時,請遵循下列建議:

  • 針對每個取用者群組使用不同的容器。 您可以使用相同的儲存體帳戶,但每個群組各使用一個容器。
  • 請勿將容器用於其他任何項目,也不會將儲存體帳戶用於其他任何項目。
  • 儲存體帳戶應位於與已部署應用程式所在的相同區域中。 如果應用程式是內部部署,請嘗試選擇最接近的區域。

在 Azure 入口網站的 [儲存體帳戶] 頁面上,於 [Blob 服務] 區段中,確定已停用下列設定。

  • 階層式命名空間
  • Blob 虛刪除
  • 版本控制

使用 Blob 儲存體作為 Azure Stack Hub 上的檢查點存放區

如果您是使用 Azure Blob 儲存體作為環境中的檢查點存放區,而該環境支援的儲存體 Blob SDK 版本與 Azure 上通常可用的版本不同,您需要使用程式碼將儲存體服務 API 版本變更為該環境支援的特定版本。 例如,如果您是在 Azure Stack Hub 2002 版上執行事件中樞,儲存體服務的最高可用版本為 2017-11-09。 在此情況下,您必須使用程式碼,將儲存體服務 API 版本的目標設為 2017-11-09。 關於如何設定特定儲存體 API 版本目標的範例,請參閱 GitHub 上的這些範例:

如果您執行的事件中樞接收器使用 Blob 儲存體,作為檢查點存放區,而不是將 Azure Stack Hub 支援的版本設為目標,您將會收到下列錯誤訊息:

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

Python 中的範例錯誤訊息

針對 Python,系統會將的 azure.core.exceptions.HttpResponseError 錯誤傳遞至 EventHubConsumerClient.receive() 的錯誤處理常式 on_error(partition_context, error)。 但是,方法 receive() 不會引發例外狀況。 print(error) 會列印下列例外狀況資訊:

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

記錄器會記錄兩個警告,如下所示:

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

下一步

請參閱下列文章以了解資料分割和檢查點:在應用程式的多個執行個體之間平衡資料分割負載