Abbiamo detto che ci sono errori ed errori. Un permanent error, nel mondo della messaggistica, si verifica (tipicamente) quando un messaggio non può essere processato.
Spesso nel mondo della messaggistica si sente parlare anche di poison message, i due vanno a braccetto. Un poison message è una forma di permanent error.
OK, ma che cosa significa?
Significa ad esempio avere un messaggio in una coda di ingresso e il messaggio è malformato. Il fatto che il messaggio sia malformato comporta che la deserilizzazione fallisca ad ogni tentativo. Non è molto diverso da un documento di Word corrotto su disco, Word cerca di aprirlo, ma fallisce ogni tentativo.
E quindi?
Ovviamente un messaggio di questo genere non lo possiamo semplicemente lasciare nella coda, sarebbe un buon modo per fare Denial of Service. Un messaggio allo stesso tempo non può essere perso, ha quindi molto senso spostarlo in un altro storage persistente in modo da permettere intervento umano finalizzato, per esempio, a un tentativo di recupero.
Generalmente i trasporti hanno un concetto chiamato Dead Letter Queue (DLQ), il cui scopo è proprio permettere di fare persistenza in maniera permanente se servisse die poison message. Una DLQ è quindi una coda come tutte le altre con un compito ben preciso: conservare i messaggi che non possono essere processati.
Ma non tutti gli errori nascono uguali
Oltre alle DLQ i sistemi di messaggistica si appoggiano anche alle così dette code di errore. che hanno uno scopo leggermente diverso.
Alla prossima :-)