Верблюд onException не перехватывает NoMessageIdException от idempotentConsumer?

Пример маршрута:

onException(Exception.class)
.process(new Processor() {
    @Override
    public void process(Exchange exchange) throws Exception {
        System.out.println("it works");
        }
    })
    .handled(true);
from("jetty://http://0.0.0.0:8888/test")
.idempotentConsumer(header("myid"), MemoryIdempotentRepository.memoryIdempotentRepository(1000000))
.skipDuplicate(false)
.filter(property(Exchange.DUPLICATE_MESSAGE).isEqualTo(true))
    .throwException(new DuplicateRequestException())
.end();

Отправка запроса на URL слушателя без параметра myid throws org.apache.camel.processor.idempotent.NoMessageIdException: невозможно найти идентификатор сообщения с помощью выражения: header(myid) при обмене сообщениями: Exchange[Сообщение: [Тело является экземпляром org.apache.camel.StreamCache]]

не переходя от onException.

1 ответ

Решение

Да, это на самом деле ошибка в Apache Camel. Я зарегистрировал билет, чтобы исправить это в следующих выпусках.

Другие вопросы по тегам