Sdílet prostřednictvím


Klientská knihovna kanálu změn objektů blob služby Azure Storage pro .NET – verze 12.0.0-preview.33

Verze serveru: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-02-10 a 2019-12-12

Účelem kanálu změn je poskytnout transakční protokoly všech změn, ke kterým dojde v objektech blob a metadatech objektů blob ve vašem účtu úložiště. Kanál změn poskytuje uspořádaný, zaručený, trvalý, neměnný protokol těchto změn jen pro čtení. Klientské aplikace můžou tyto protokoly kdykoli číst. Kanál změn umožňuje vytvářet efektivní a škálovatelná řešení, která zpracovávají události změn, ke kterým dochází ve vašem účtu Blob Storage, za nízkou cenu.

Zdrojový kód | Balíček (NuGet) | Dokumentace k produktu

Začínáme

Instalace balíčku

Nainstalujte klientskou knihovnu azure Storage Blobs pro .NET pomocí NuGetu:

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

Požadavky

K použití tohoto balíčku potřebujete předplatné Azure a účet úložiště .

K vytvoření nového účtu úložiště můžete použít Azure Portal, Azure PowerShell nebo Azure CLI. Tady je příklad použití Azure CLI:

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

Ověření klienta

Ověřování funguje stejně jako v Azure.Storage.Blobs.

Klíčové koncepty

Kanál změn se ukládá jako objekty blob ve speciálním kontejneru ve vašem účtu úložiště za standardní ceny objektů blob. Dobu uchovávání těchto souborů můžete řídit podle svých požadavků (viz podmínky aktuální verze). Události změn se připojují k kanálu změn jako záznamy ve specifikaci formátu Apache Avro: kompaktní, rychlý, binární formát, který poskytuje bohaté datové struktury s vloženým schématem. Tento formát se často používá v ekosystému Hadoop, Stream Analytics a Azure Data Factory.

Tyto protokoly můžete zpracovávat přírůstkově nebo úplně. Libovolný počet klientských aplikací může nezávisle číst kanál změn paralelně a vlastním tempem. Analytické aplikace, jako je Apache Drill nebo Apache Spark, můžou protokoly využívat přímo jako soubory Avro, což vám umožní je zpracovat za nízkou cenu, s velkou šířkou pásma a bez nutnosti psát vlastní aplikaci.

Bezpečnost vlákna

Zaručujeme, že všechny metody instance klienta jsou bezpečné pro přístup z více vláken a nezávislé na sobě (pokyny). Tím se zajistí, že doporučení opakovaného použití instancí klienta bude vždy bezpečné, a to i napříč vlákny.

Další koncepty

Možnosti | klienta Přístup k odpovědi | Dlouhotrvající operace | Zpracování selhání | Diagnostika | Zesměšňovat | Životnost klienta

Příklady

Získání všech událostí v kanálu změn

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

Získání událostí mezi počátečním a koncovým časem

// 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);
}

Pokračovat s pokračovánímToken

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);
}

Řešení potíží

Všechny operace služby Blob Service vyvolají výjimku RequestFailedException při selhání s užitečnými ErrorCodes. Mnoho z těchto chyb je možné obnovit.

Další kroky

Začínáme s našimi ukázkami kanálu změn:

  1. Hello World: Získejte změny, ke kterým došlo v účtu úložiště (nebo asynchronně).
  2. Ověřování: Ověřování pomocí připojovacích řetězců, veřejného přístupu, sdílených klíčů, sdílených přístupových podpisů a Azure Active Directory.

Přispívání

Podrobnosti o sestavování, testování a přispívání do této knihovny najdete na CONTRIBUTING.md úložiště .

Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete na cla.microsoft.com.

Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo se obraťte na opencode@microsoft.com případné další dotazy nebo komentáře.