Delen via


Azure Storage Blobs Change Feed client library for .NET - versie 12.0.0-preview.33

Serverversie: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-02-10 en 2019-12-12

Het doel van de wijzigingenfeed is om transactielogboeken op te geven van alle wijzigingen die optreden in de blobs en de blobmetagegevens in uw opslagaccount. De wijzigingenfeed biedt geordende, gegarandeerde, duurzame, onveranderbare, alleen-lezen logboeken van deze wijzigingen. Clienttoepassingen kunnen deze logboeken op elk gewenst moment lezen. Met de wijzigingenfeed kunt u efficiënte en schaalbare oplossingen bouwen die wijzigingsevenementen verwerken die plaatsvinden in uw Blob Storage-account tegen lage kosten.

Broncode | Pakket (NuGet) | Productdocumentatie

Aan de slag

Het pakket installeren

Installeer de Azure Storage Blobs-clientbibliotheek voor .NET met NuGet:

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

Vereisten

U hebt een Azure-abonnement en een opslagaccount nodig om dit pakket te kunnen gebruiken.

Als u een nieuw opslagaccount wilt maken, kunt u azure portal, Azure PowerShell of de Azure CLI gebruiken. Hier volgt een voorbeeld met behulp van de Azure CLI:

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

De client verifiëren

Verificatie werkt op dezelfde wijze als in Azure.Storage.Blobs.

Belangrijkste concepten

De wijzigingenfeed wordt opgeslagen als blobs in een speciale container in uw opslagaccount tegen standaardprijzen voor blob. U kunt de bewaarperiode van deze bestanden bepalen op basis van uw vereisten (zie de voorwaarden van de huidige release). Wijzigingsgebeurtenissen worden toegevoegd aan de wijzigingenfeed als records in de apache Avro-indelingsspecificatie: een compacte, snelle, binaire indeling die uitgebreide gegevensstructuren met inlineschema biedt. Deze indeling wordt veel gebruikt in het Hadoop-ecosysteem, Stream Analytics en Azure Data Factory.

U kunt deze logboeken stapsgewijs of volledig verwerken. Een willekeurig aantal clienttoepassingen kan de wijzigingenfeed onafhankelijk lezen, parallel en in hun eigen tempo. Analysetoepassingen zoals Apache Drill of Apache Spark kunnen logboeken rechtstreeks als Avro-bestanden gebruiken, waarmee u ze tegen lage kosten, met hoge bandbreedte en zonder dat u een aangepaste toepassing hoeft te schrijven.

Veiligheid van schroefdraad

We garanderen dat alle clientexemplaarmethoden thread-veilig en onafhankelijk van elkaar zijn (richtlijn). Dit zorgt ervoor dat de aanbeveling om clientexemplaren opnieuw te gebruiken altijd veilig is, zelfs voor alle threads.

Aanvullende concepten

Clientopties | Toegang tot het antwoord | Langlopende bewerkingen | Afhandeling van fouten | Diagnostics | Spottende | Clientlevensduur

Voorbeelden

Alle gebeurtenissen in de wijzigingenfeed ophalen

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

Gebeurtenissen ophalen tussen een begin- en eindtijd

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

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

Problemen oplossen

Alle blob-servicebewerkingen genereren een RequestFailedException bij een fout met nuttige ErrorCodes. Veel van deze fouten kunnen worden hersteld.

Volgende stappen

Aan de slag met onze voorbeelden van wijzigingenfeeds:

  1. Hallo wereld: wijzigingen ophalen die zijn opgetreden in uw opslagaccount (of asynchroon)
  2. Verificatie: verifieer met verbindingsreeksen, openbare toegang, gedeelde sleutels, handtekeningen voor gedeelde toegang en Azure Active Directory.

Bijdragen

Zie de Storage CONTRIBUTING.md voor meer informatie over het bouwen, testen en bijdragen aan deze bibliotheek.

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie voor meer informatie de veelgestelde vragen over de gedragscode of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.