Libreria client dei BLOB di archiviazione di Azure per .NET - versione 12.0.0-preview.33
Versione server: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-020-10 e 2019-12-12
Lo scopo del feed di modifiche consiste nel fornire i log delle transazioni di tutte le modifiche che si verificano nei BLOB e nei metadati BLOB nell'account di archiviazione. Il feed di modifiche fornisce log ordinati, garantiti, durevoli, non modificabili, di sola lettura di queste modifiche. Le applicazioni client possono leggere questi log in qualsiasi momento. Il feed di modifiche consente di creare soluzioni efficienti e scalabili che elaborano gli eventi di modifica che si verificano nell'account di archiviazione BLOB a un costo basso.
Codice | sorgente Pacchetto (NuGet) | Documentazione del prodotto
Introduzione
Installare il pacchetto
Installare la libreria client BLOB di Archiviazione di Azure per .NET con NuGet:
dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease
Prerequisiti
È necessaria una sottoscrizione di Azure e un account di archiviazione per usare questo pacchetto.
Per creare un nuovo account di archiviazione, è possibile usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure. Di seguito è riportato un esempio basato sull'uso dell'interfaccia della riga di comando di Azure:
az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS
Autenticare il client
L'autenticazione funziona come in Azure.Storage.BLOBs.
Concetti chiave
Il feed di modifiche viene archiviato come BLOB in un contenitore speciale nell'account di archiviazione con costi di prezzi BLOB standard. È possibile controllare il periodo di conservazione di questi file in base ai requisiti (vedere le condizioni della versione corrente). Gli eventi di modifica vengono aggiunti al feed di modifiche come record nella specifica di formato Apache Avro: un formato compatto, veloce e binario che fornisce strutture di dati avanzate con schema inline. Questo formato è largamente usato nell'ecosistema Hadoop, dall'analisi di flusso e da Azure Data Factory.
È possibile elaborare questi log in modo incrementale o completo. Qualsiasi numero di applicazioni client può leggere in modo indipendente il feed di modifiche, in parallelo e al proprio ritmo. Le applicazioni di analisi, ad esempio Apache Drill o Apache Spark, possono usare i log direttamente come file Avro, che consentono di elaborarli a un costo basso, con larghezza di banda elevata e senza dover scrivere un'applicazione personalizzata.
Thread safety
Si garantisce che tutti i metodi di istanza client siano thread-safe e indipendenti tra loro (linee guida). Ciò garantisce che la raccomandazione di riutilizzare le istanze client sia sempre sicura, anche tra thread.
Concetti aggiuntivi
Opzioni | client Accesso alla risposta | Operazioni | a esecuzione prolungataGestione degli errori | Diagnostica | Beffardo | Durata client
Esempio
Ottenere tutti gli eventi nel feed di modifiche
// Get all the events in the change feed.
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
changeFeedEvents.Add(changeFeedEvent);
}
Ottenere eventi tra un'ora di inizio e di fine
// 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);
}
Riprendere con continuazioneToken
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);
}
Risoluzione dei problemi
Tutte le operazioni del servizio BLOB genereranno un'eccezione RequestFailedException in caso di errore con s utileErrorCode
. Molti di questi errori sono recuperabili.
Passaggi successivi
Introduzione agli esempi di feed di modifiche:
- Hello World: ottenere modifiche che si sono verificate nell'account di archiviazione (o in modo asincrono)
- Autenticazione: eseguire l'autenticazione con stringhe di connessione, accesso pubblico, chiavi condivise, firme di accesso condiviso e Azure Active Directory.
Contributo
Per informazioni dettagliate su compilazione, test e contributo a questa libreria, vedere Archiviazione CONTRIBUTING.md .
In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, visitare cla.microsoft.com.
Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.