Udostępnij za pośrednictwem


Biblioteka klienta zestawienia zmian obiektów blob usługi Azure Storage dla platformy .NET — wersja 12.0.0-preview.33

Wersja serwera: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-02-10 i 2019-12-12

Celem zestawienia zmian jest udostępnienie dzienników transakcji wszystkich zmian w obiektach blob i metadanych obiektu blob na koncie magazynu. Zestawienie zmian zapewnia uporządkowany, gwarantowany, trwały, niezmienny, tylko do odczytu dziennik tych zmian. Aplikacje klienckie mogą odczytywać te dzienniki w dowolnym momencie. Kanał informacyjny zmian umożliwia tworzenie wydajnych i skalowalnych rozwiązań, które przetwarzają zdarzenia zmian występujące na koncie usługi Blob Storage przy niskich kosztach.

Kod | źródłowy Pakiet (NuGet) | Dokumentacja produktu

Wprowadzenie

Instalowanie pakietu

Zainstaluj bibliotekę klienta obiektów blob usługi Azure Storage dla platformy .NET za pomocą narzędzia NuGet:

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

Wymagania wstępne

Do korzystania z tego pakietu potrzebna jest subskrypcja platformy Azure i konto magazynu .

Aby utworzyć nowe konto magazynu, możesz użyć witryny Azure Portal, Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Oto przykład użycia interfejsu wiersza polecenia platformy Azure:

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

Uwierzytelnianie klienta

Uwierzytelnianie działa tak samo jak w usłudze Azure.Storage.Blobs.

Kluczowe pojęcia

Zestawienie zmian jest przechowywane jako obiekty blob w specjalnym kontenerze na koncie magazynu przy standardowym koszcie cen obiektów blob. Okres przechowywania tych plików można kontrolować zgodnie z wymaganiami (zobacz warunki bieżącej wersji). Zdarzenia zmian są dołączane do zestawienia zmian jako rekordy w specyfikacji formatu Apache Avro: kompaktowy, szybki format binarny, który zapewnia rozbudowane struktury danych ze schematem wbudowanym. Ten format jest powszechnie używany w ekosystemie hadoop, usłudze Stream Analytics i Azure Data Factory.

Te dzienniki można przetwarzać przyrostowo lub w całości. Dowolna liczba aplikacji klienckich może niezależnie odczytywać zestawienie zmian, równolegle i we własnym tempie. Aplikacje analityczne, takie jak Apache Drill lub Apache Spark, mogą korzystać z dzienników bezpośrednio jako plików Avro, co pozwala przetwarzać je przy niskich kosztach, z wysoką przepustowością i bez konieczności pisania aplikacji niestandardowej.

Bezpieczeństwo wątkowe

Gwarantujemy, że wszystkie metody wystąpienia klienta są bezpieczne wątkowo i niezależne od siebie (wytyczne). Dzięki temu zalecenie ponownego obsługi wystąpień klienta jest zawsze bezpieczne, nawet w wątkach.

Dodatkowe pojęcia

Opcje | klienta Uzyskiwanie dostępu do odpowiedzi | Długotrwałe operacje | Obsługa błędów | Diagnostyka | Szyderczy | Okres istnienia klienta

Przykłady

Pobieranie wszystkich zdarzeń w kanale zmian

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

Pobieranie zdarzeń między godziną rozpoczęcia i zakończenia

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

Wznawianie przy użyciu tokenu kontynuacji

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

Rozwiązywanie problemów

Wszystkie operacje usługi Blob Service spowodują zgłoszenie wyjątku RequestFailedException w przypadku błędu z przydatnymi ErrorCodeelementami. Wiele z tych błędów można odzyskać.

Następne kroki

Rozpocznij pracę z naszymi przykładami zestawienia zmian:

  1. Hello world: pobieranie zmian, które wystąpiły na koncie magazynu (lub asynchronicznie)
  2. Uwierzytelnianie: Uwierzytelnianie przy użyciu parametrów połączenia, dostępu publicznego, kluczy udostępnionych, sygnatur dostępu współdzielonego i usługi Azure Active Directory.

Współtworzenie

Zobacz CONTRIBUTING.md Storage , aby uzyskać szczegółowe informacje na temat kompilowania, testowania i współtworzenia tej biblioteki.

W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź cla.microsoft.com.

W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.