Menu

Asset

Inbox Pattern e consumer idempotenti

L'Inbox Pattern aiuta un consumer a gestire messaggi duplicati, retry e fallimenti parziali senza produrre effetti di business doppi.

Tipo
Pratica

Nei sistemi distribuiti, un consumer non dovrebbe assumere che ogni messaggio arrivi una sola volta. Retry, timeout, redelivery e failure parziali possono far arrivare lo stesso messaggio più volte. Se il consumer esegue ogni volta l'azione di business senza controlli, può creare ordini duplicati, notifiche multiple, pagamenti ripetuti o stati incoerenti. L'Inbox Pattern introduce una registrazione locale dei messaggi ricevuti o processati. Prima di applicare l'effetto di business, il consumer verifica se quel messaggio è già stato gestito. Se sì, evita di rieseguire l'effetto. Se no, registra il processing e applica l'azione in modo controllato. Il punto architetturale non è solo tecnico. Bisogna definire quale identificativo rende unico il messaggio, quale operazione deve essere idempotente, quanto a lungo conservare le tracce, come osservare i fallimenti e cosa fare quando il messaggio è formalmente duplicato ma il contesto di business è cambiato. Il broker può aiutare, ma non può sostituire la semantica applicativa.

Tag