Доставка JMS
Нет, нет, если сообщение доставляется из очереди ввода. Просто потому, что это то же самое оригинальное сообщение, которое вы получили до . JMS-брокер ничего не знает о модификациях, которые вы сделали на маршруте Camel.
Однако обычно это не проблема. Поскольку при повторной доставке тот же потребитель снова потребляет сообщение и снова делает те же самые модификации в сообщении.
Как только вы достигнете "границы транзакции" на вашем маршруте (это означает, что что-то сделано, что не может быть повторено или приведет к другому результату), вы должны поместить измененное сообщение в другую очередь «сохранить» его текущее состояние.
Оттуда вы можете продолжить с другим потребителем и так далее. Если вы создаете цепочку обработки, подобную этой, ваша система представляет собой Pipes and Filter EIP .
Поставка верблюда
Другая возможность - использовать Camel ErrorHandler . Он обрабатывает ошибки на одном уровне шага маршрута. Он также может делать повторные попытки, но затем вы должны убедиться, что сообщение правильно обработано, если все повторные попытки верблюда завершатся неудачно (например, отправьте сообщение в очередь ошибок).
Пока повторная доставка брокера является последним средством для вашего сообщения, вы должны строить свою систему с учетом потенциальной повторной доставки.