Верблюд 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. Я зарегистрировал билет, чтобы исправить это в следующих выпусках.