適用于 .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 PowerShell或Azure 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
。 這些錯誤有許多是可復原的。
下一步
開始使用我們的 變更摘要範例:
- Hello World:取得儲存體帳戶中發生的變更 (或以非同步方式)
- 驗證:使用連接字串、公用存取、共用金鑰、共用存取簽章和 Azure Active Directory 進行驗證。
參與
如需建置、測試和參與此程式庫的詳細資訊,請參閱 儲存體 CONTRIBUTING.md 。
此專案歡迎參與和提供建議。 大部分的參與都要求您同意「參與者授權合約 (CLA)」,宣告您有權且確實授與我們使用投稿的權利。 如需詳細資訊,請造訪 cla.microsoft.com。
此專案採用 Microsoft Open Source Code of Conduct (Microsoft 開放原始碼管理辦法)。 如需詳細資訊,請參閱管理辦法常見問題集,如有任何其他問題或意見請連絡 opencode@microsoft.com。