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
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Mappare una complex property di una entity su un campo JSON
Permettere a un LLM di invocare funzioni con Microsoft.Extensions.AI
Configurare OpenTelemetry per Application Insights su ASP.NET Core
Keynote Global Azure 2026 - ASPItalia.com
Creare una chat AI con Angular e React
Integrare Agenti A2A in Azure API Management
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Welcome to Future Dev Day 2026
Diagnosticare e monitorare Azure con Azure MCP Server
Nuova modale riconnessione Blazor
Mischiare codice server side e client side in una query LINQ con Entity Framework
I più letti di oggi
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Esaminare documenti con namespace con LINQ e XDocument
- Accedere a dati esposti con WebService con Silverlight 1.0
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit


