Ваша система будет намного более гибкой, если сможет справиться с сообщениями, вышедшими из строя. Шаблон, который я использовал для решения этой проблемы в прошлом, заключается в использовании очереди задержек (в системе, обрабатывающей 8 миллионов сообщений в день в финансовом мире).
В вашем примере, если бы я получил удаление для заказа, который еще не получил, я бы отложил его на некоторое время и повторил бы попытку. Если бы я все еще ничего не знал о порядке, который меня просят удалить, я бы выдал какую-то ошибку (ответ исходному отправителю, отправка сообщения в специальную очередь ошибок, ...).
Что касается реализации очереди задержки, то это может быть другая очередь JMS со службой, которая может принимать сообщения с задержкой. Затем он периодически читает задержанные сообщения и проверяет, истек ли задержанный период времени, и повторно отправляет сообщение в исходную очередь назначения.