Il sistema sarà molto più flessibile se è in grado di gestire i messaggi fuori servizio. Lo schema che ho usato per risolvere questo problema in passato è quello di utilizzare una coda di ritardo (su un sistema che elaborava 8 milioni di messaggi al giorno nel mondo finanziario).
Nel tuo esempio, se ho ricevuto un'eliminazione per un ordine che non avevo ancora ricevuto, lo ritarderei per un periodo di tempo e riprovare. Se non sapessi ancora nulla sull'ordine che mi viene chiesto di eliminare, avrei sollevato qualche tipo di errore (rispondere al mittente originale, inviare un messaggio a una coda di errore speciale, ...).
Per quanto riguarda l'implementazione della coda di ritardo, questa può essere un'altra coda JMS con un servizio che può accettare messaggi in ritardo. Quindi legge periodicamente i messaggi in ritardo e controlla se il periodo di tempo ritardato è scaduto e invia nuovamente il messaggio alla coda di destinazione originale.
Grazie, darò un'occhiata a questo – user271858