Azure Storage-blobok változáscsatorna-ügyfélkódtára a .NET-hez – 12.0.0-preview.33-es verzió
Kiszolgáló verziója: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-02-10 és 2019-12-12
A változáscsatorna célja, hogy tranzakciónaplókat adjon meg a blobok és a tárfiók blob-metaadatainak változásairól. A változáscsatorna rendezett, garantált, tartós, nem módosítható, írásvédett naplót biztosít ezekről a változásokról. Az ügyfélalkalmazások bármikor elolvashatják ezeket a naplókat. A változáscsatorna lehetővé teszi, hogy hatékony és méretezhető megoldásokat hozzon létre, amelyek alacsony költséggel dolgozzák fel a Blob Storage-fiókban előforduló változáseseményeket.
Forráskód | Csomag (NuGet) | Termékdokumentáció
Első lépések
A csomag telepítése
Telepítse az Azure Storage Blobs ügyfélkódtárat a .NET-hez a NuGet használatával:
dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease
Előfeltételek
A csomag használatához Azure-előfizetésre és tárfiókra van szüksége.
Új tárfiók létrehozásához használhatja az Azure Portalt, Azure PowerShell vagy az Azure CLI-t. Íme egy példa az Azure CLI használatával:
az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS
Az ügyfél hitelesítése
A hitelesítés ugyanúgy működik, mint az Azure.Storage.Blobsban.
Fő fogalmak
A változáscsatorna blobként van tárolva egy speciális tárolóban a tárfiókban standard blob díjszabási költséggel. A fájlok megőrzési időtartamát a követelmények alapján szabályozhatja (lásd az aktuális kiadás feltételeit). A változási események rekordként vannak hozzáfűzve a változáscsatornához az Apache Avro formátumspecifikációjában: egy kompakt, gyors bináris formátum, amely részletes adatstruktúrákat és beágyazott sémát biztosít. Ezt a formátumot széles körben használják a Hadoop-ökoszisztémában, a Stream Analyticsben és a Azure Data Factory.
Ezeket a naplókat növekményesen vagy teljes egészében is feldolgozhatja. Tetszőleges számú ügyfélalkalmazás képes egymástól függetlenül olvasni a változáscsatornát, párhuzamosan és a saját tempójukban. Az olyan elemzési alkalmazások, mint az Apache Drill vagy az Apache Spark, közvetlenül Avro-fájlokként használhatják fel a naplókat, így alacsony költséggel, nagy sávszélességgel és egyéni alkalmazás írása nélkül dolgozhatják fel őket.
Menetbiztonság
Garantáljuk, hogy minden ügyfélpéldány-metódus szálbiztos és független egymástól (iránymutatás). Ez biztosítja, hogy az ügyfélpéldányok újrafelhasználására vonatkozó javaslat mindig biztonságos legyen, még a szálak között is.
További fogalmak
Ügyfélbeállítások | A válasz | elérése Hosszú ideig futó műveletek | Hibák | kezelése Diagnosztika | Gúnyos | Ügyfélélettartam
Példák
A változáscsatorna összes eseményének lekérése
// Get all the events in the change feed.
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
changeFeedEvents.Add(changeFeedEvent);
}
Események lekérése kezdés és befejezés között
// 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);
}
Folytatás folytatássalToken
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);
}
Hibaelhárítás
Minden Blob-szolgáltatásművelet egy RequestFailedException hibát jelez hasznos ErrorCode
s-vel. Számos ilyen hiba helyreállítható.
Következő lépések
Ismerkedés a változáscsatorna-mintákkal:
- "Helló világ!" alkalmazás: A tárfiókban (vagy aszinkron módon) végrehajtott módosítások lekérése
- Hitelesítés: Hitelesítés kapcsolati sztringekkel, nyilvános hozzáféréssel, megosztott kulcsokkal, közös hozzáférésű jogosultságkódokkal és Azure Active Directoryval.
Közreműködés
A tár létrehozásával, tesztelésével és közreműködésével kapcsolatos részletekért tekintse meg a Tár CONTRIBUTING.md .
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. A részletekért látogasson el a cla.microsoft.com.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.