Azure Cosmos DB è il database multifunzionale di punta offerto dalla piattaforma Microsoft Azure. E' altamente scalabile, affidabile e performante e tra le sue ricche funzionalità dispone anche di un change feed dal quale è possibile leggere tutte le modifiche effettuati ai documenti, nel caso di container SQL, ma sono supportati anche altre tipologie di container.
Per leggere questo feed possiamo sfruttare l'SDK per i rispettivi linguaggi, oppure, data la natura del feed e delle potenziali attività da fare, sfruttare le Azure Function. Gli scenari di utilizzo possono essere molteplici: materializzare delle tabelle sulla base dei documenti modificati, avere uno storico delle modifiche fatte ai documenti, alimentare tabelle a scopi di reportistica, oppure distribuire i cambiamenti su più micro servizi.
Sfruttare il feed con le Azure Function è molto semplice. Basta, se usiamo il wizard online, utilizzare il trigger relativo.

Successivamente dobbiamo indicare le coordinate del Cosmos DB e della collezione da monitorare.

Nella figura possiamo vedere che ci viene chiesto anche il nome della collezione di lease, un container speciale usato per tenere traccia sullo stato del feed e per coordinare il lavoro delle function. Possiamo infatti scalare e consumare il feed contemporaneamente accingendo da più partizioni.
Possiamo a questo punto procedere al codice, il quale riceve come parametro uno o più documenti che sono stati modificati.
#r "Microsoft.Azure.Documents.Client" using System; using System.Collections.Generic; using Microsoft.Azure.Documents; public static void Run(IReadOnlyList<Document> documents, TraceWriter log) { if (documents != null && documents.Count > 0) { log.Verbose("Documents modified " + documents.Count); foreach (var d in documents) { log.Verbose("Id " + d.Id); } } }
Se proviamo ora a modificare uno o più documenti, possiamo vedere nel log la lista degli id cambiati.

Il motore riceve in batch i cambiamenti e riparte sempre dal punto in cui è rimasto, perciò anche in caso di interruzioni della function, non perdiamo i cambiamenti che si sono verificati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Montare Azure Blob Storage su Linux con BlobFuse2
Ordine e importanza per @layer in CSS
Gestire gli accessi con Token su Azure Container Registry
Il nuovo controllo Range di Blazor 9
Proteggere le risorse Azure con private link e private endpoints
Anonimizzare i dati sensibili nei log di Azure Front Door
Ricevere notifiche sui test con Azure Load Testing
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Gestire progetti .NET + React in .NET Aspire
Integrare un servizio esterno con .NET Aspire
Migliorare l'organizzazione delle risorse con Azure Policy
I più letti di oggi
- PWAConf 2020 - Online
- Gestione ciclo di vita in .NET Aspire
- Inserire, modificare o cancellare record con ADO.NET
- Redirect automatico da HTTP a HTTPs
- #SQLServer #Modeling (codename Oslo) CTP di nov 2009 aggiornato per VS 2010 RC: http://u.aspitalia.com/fi
- Supporto migliorato agli statement condizionali nelle pipeline di Azure DevOps
- Semplificare il deploy di applicazioni Silverlight con la compilazione condizionale
- Gestire l'errore di caricamento dell'immagine in Silverlight 2.0
- Rimandare l'elaborazione di un messaggio di una coda Service Bus in Windows Azure
- Abilitare la compressione GZip nei website di Windows Azure