IVAN CAPPONI.NET/C# · Microsoft Azure

Azure · Worker · Batch

Worker asincroni per aggiornamenti di catalogo ad alto volume

Ultimo aggiornamento: giugno 20269 min di letturaAvanzato

Worker asincroni che processano aggiornamenti di catalogo ad alto volume su Azure
Aggiornare cataloghi enormi senza saturare API e infrastruttura.

Aggiornare poche decine di prodotti è banale. Aggiornarne decine o centinaia di migliaia — con cambi di prezzo, stock e attributi che arrivano a ondate — richiede un'architettura pensata per il volume. I worker asincroni sono il modo standard per farlo in modo controllato.

Perché non farlo in linea

Elaborare un grande catalogo dentro una singola richiesta o un singolo job monolitico porta a timeout, picchi e fallimenti totali al primo errore. Spezzare il lavoro in unità piccole e indipendenti, messe in coda e processate da worker, rende il sistema resiliente e scalabile.

Code e unità di lavoro

Ogni cambiamento (un prodotto, un gruppo di varianti, un batch) diventa un messaggio in coda. I worker consumano i messaggi in parallelo. Vantaggi: i fallimenti isolano la singola unità (e finiscono in dead-letter), il carico si distribuisce, e si può riprendere da dove ci si era fermati.

Batching: il giusto compromesso

Chiamare l'API una volta per prodotto è inefficiente; mandare tutto in un colpo è rischioso. Il batching raggruppa N elementi per chiamata, sfruttando le operazioni bulk dei marketplace (es. operazioni Feed/bulk di eBay). La dimensione del batch va calibrata su limiti API e dimensione dei payload.

Concorrenza controllata

LevaEffetto
Numero di workerQuanti messaggi in parallelo
Max parallelismo per hostEvita di saturare CPU/connessioni
Rate limiter condivisoRispetta il budget API globale
Dimensione batchBilancia throughput e rischio

L'obiettivo è massimizzare il throughput senza superare i limiti dei sistemi a valle.

Operazioni bulk e asincrone

Molti marketplace offrono operazioni massive asincrone: si carica un set di modifiche e si riceve un job da monitorare. I worker devono saper inviare il batch, tracciare il job e leggere l'esito per ogni elemento, riportando i fallimenti per la rilavorazione.

Ripresa dai fallimenti

In un aggiornamento di massa qualcosa fallirà sempre. La chiave è la granularità: un errore su un prodotto non deve invalidare l'intero lotto. Con messaggi indipendenti, idempotenza e dead-letter, gli elementi falliti si rielaborano senza ripartire da zero.

Architettura su Azure

Su Microsoft Azure: una coda Service Bus per le unità di lavoro, Azure Functions o container come worker con parallelismo configurato, un rate limiter condiviso, e storage per stato e log. Una Function di orchestrazione può suddividere un grande aggiornamento in batch e seguirne l'avanzamento.

Errori comuni

  • job monolitici che falliscono interi al primo errore;
  • una chiamata per prodotto, inefficiente e lenta;
  • concorrenza illimitata che satura API e infrastruttura;
  • nessuna ripresa granulare dai fallimenti.

Conclusione

I worker asincroni con code, batching, concorrenza controllata e ripresa granulare sono il modo affidabile per aggiornare cataloghi ad alto volume. Trasformano un'operazione rischiosa in un processo prevedibile e monitorabile, anche con centinaia di migliaia di prodotti.