Implementare il processore dei feed di modifiche

Completato

Bastano pochi passaggi per creare il processore del feed di modifiche:

  1. Ottenere il generatore di processori dalla variabile del contenitore monitorata (di origine)
  2. Usare il generatore per compilare il processore specificando il delegato, il nome del processore, il contenitore di lease e il nome dell'istanza host
  3. Avviare il processore

Prima di tutto, è necessario creare un'istanza di Microsoft.Azure.Cosmos. Container sia per il contenitore di origine che per il contenitore di lease.

Container sourceContainer = client.GetContainer("cosmicworks", "products");

Container leaseContainer = client.GetContainer("cosmicworks", "productslease");

Successivamente, è possibile usare il metodo GetChangeFeedProcessorBuilder da un'istanza del contenitore per creare un generatore. A questo punto, è necessario specificare il nome del processore e il delegato per gestire ogni batch di modifiche.

var builder = sourceContainer.GetChangeFeedProcessorBuilder<Product>(
    processorName: "productItemProcessor",
    onChangesDelegate: changeHandlerDelegate
);

Il generatore viene fornito con una serie di metodi Fluent per configurare il processore, tra i quali:

Metodo Descrizione
WithInstanceName Nome dell'istanza host
WithStartTime Impostare il puntatore (nel tempo) per iniziare a cercare le modifiche dopo
WithLeaseContainer Configura il contenitore di lease
WithErrorNotification Assegna un delegato per gestire gli errori durante l'esecuzione
WithMaxItems Quantifica il numero massimo di elementi in ogni batch
WithPollInterval Imposta il ritardo quando il processore eseguirà il polling del feed di modifiche per le nuove modifiche

Un semplice esempio è configurare il nome dell'istanza usando WithInstanceName, il contenitore di lease con WithLeaseContainer e quindi usare Build per compilare il processore del feed di modifiche.

ChangeFeedProcessor processor = builder
    .WithInstanceName("desktopApplication")
    .WithLeaseContainer(leaseContainer)
    .Build();

Il processore del feed di modifiche risultante include entrambi i metodi StartAsync e StopAsync per eseguire e terminare il processore in modo asincrono.

await processor.StartAsync();

// Wait while processor handles items

await processor.StopAsync();