共用方式為


適用于 .NET 的 Azure 儲存體 Blob 變更摘要用戶端程式庫 - 12.0.0-preview.33 版

伺服器版本:2021-02-12、 2020-12-06、2020-10-02、2020-08-04、2020-06-12 2020-04-08、2020-02-10 和 2019-12-12

變更摘要的目的在於提供您儲存體帳戶中 Blob 和 Blob 中繼資料所發生全部變更的交易記錄。 變更摘要提供這些變更的已 排序、 保證、 持久、 不可變、 唯讀 記錄。 用戶端應用程式可以隨時讀取這些記錄。 變更摘要可讓您建立有效率且可調整的解決方案,以低成本的方式處理 Blob 儲存體帳戶中發生的變更事件。

| 原始程式碼套件 (NuGet) | 產品檔

開始使用

安裝套件

使用 NuGet安裝適用于 .NET 的 Azure 儲存體 Blob 用戶端程式庫:

dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease

必要條件

您需要 Azure 訂 用帳戶和 儲存體帳戶 才能使用此套件。

若要建立新的儲存體帳戶,您可以使用Azure 入口網站Azure PowerShellAzure CLI。 以下是使用 Azure CLI 的範例:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

驗證用戶端

驗證的運作方式與 在 Azure.Storage.Blobs中相同。

重要概念

變更摘要會以 Blob 的形式儲存在您的儲存體帳戶中,以標準 Blob 定價成本儲存為特殊容器。 您可以根據需求來控制這些檔案的保留期限 (查看目前版本) 的 條件。 變更事件會附加至變更摘要做為 Apache Avro 格式規格中的記錄:精簡、快速、二進位格式,可使用內嵌架構提供豐富的資料結構。 此格式廣泛運用在 Hadoop 生態系統、串流分析和 Azure Data Factory。

您可以累加或完整地處理這些記錄。 任何數目的用戶端應用程式都可以依自己的步調,以平行方式獨立讀取變更摘要。 Apache Drill 或 Apache Spark 之類的分析應用程式可以直接取用記錄檔做為 Avro 檔案,讓您以低成本的方式處理這些記錄,並使用高頻寬,而不需要撰寫自訂的應用程式。

執行緒安全

我們保證所有用戶端實例方法都是安全線程,且彼此獨立 (指導方針) 。 這可確保重複使用用戶端實例的建議一律是安全的,即使是跨執行緒也一樣。

其他概念

用戶端選項 | 存取回應 | 長時間執行的作業 | 處理失敗 | 診斷 | 嘲笑 | 用戶端存留期

範例

取得變更摘要中的所有事件

// Get all the events in the change feed.
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
    changeFeedEvents.Add(changeFeedEvent);
}

取得開始和結束時間之間的事件

// Create the start and end time.  The change feed client will round start time down to
// the nearest hour, and round endTime up to the next hour if you provide DateTimeOffsets
// with minutes and seconds.
DateTimeOffset startTime = new DateTimeOffset(2017, 3, 2, 15, 0, 0, TimeSpan.Zero);
DateTimeOffset endTime = new DateTimeOffset(2020, 10, 7, 2, 0, 0, TimeSpan.Zero);

// You can also provide just a start or end time.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
    start: startTime,
    end: endTime))
{
    changeFeedEvents.Add(changeFeedEvent);
}

使用 continuationToken 繼續

string continuationToken = null;
await foreach (Page<BlobChangeFeedEvent> page in changeFeedClient.GetChangesAsync().AsPages(pageSizeHint: 10))
{
    foreach (BlobChangeFeedEvent changeFeedEvent in page.Values)
    {
        changeFeedEvents.Add(changeFeedEvent);
    }

    // Get the change feed continuation token.  The continuation token is not required to get each page of events,
    // it is intended to be saved and used to resume iterating at a later date.
    continuationToken = page.ContinuationToken;
    break;
}

// Resume iterating from the pervious position with the continuation token.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
    continuationToken: continuationToken))
{
    changeFeedEvents.Add(changeFeedEvent);
}

疑難排解

所有 Blob 服務作業都會在失敗時擲回RequestFailedException,但很有説明ErrorCode 這些錯誤有許多是可復原的。

下一步

開始使用我們的 變更摘要範例

  1. Hello World:取得儲存體帳戶中發生的變更 (或以非同步方式)
  2. 驗證:使用連接字串、公用存取、共用金鑰、共用存取簽章和 Azure Active Directory 進行驗證。

參與

如需建置、測試和參與此程式庫的詳細資訊,請參閱 儲存體 CONTRIBUTING.md

此專案歡迎參與和提供建議。 大部分的參與都要求您同意「參與者授權合約 (CLA)」,宣告您有權且確實授與我們使用投稿的權利。 如需詳細資訊,請造訪 cla.microsoft.com

此專案採用 Microsoft Open Source Code of Conduct (Microsoft 開放原始碼管理辦法)。 如需詳細資訊,請參閱管理辦法常見問題集,如有任何其他問題或意見請連絡 opencode@microsoft.com