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 ErrorCode
elementami. Wiele z tych błędów można odzyskać.
Następne kroki
Rozpocznij pracę z naszymi przykładami zestawienia zmian:
- Hello world: pobieranie zmian, które wystąpiły na koncie magazynu (lub asynchronicznie)
- 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.