Я хотел бы проверить логику повторов, встроенную в мое определение маршрута Camel.
from(somewhere)
.errorHandler(
defaultErrorHandler()
.log("something")
.maxRedeliveries(3)
)
.to(somewhere-else)
Для этого я написал тест, намеренно поднять исключение.
int counter = 0;
@Test
public void simulateError() throws Exception {
NotifyBuilder nb = new NotifyBuilder(mock.getCamelContext()).whenDone(3).create();
mock.whenAnyExchangedReceived(
new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
counter++;
throw new FooException("Error during processing: " + counter);
}
}
);
template.sendBody(somewhere, "some message");
boolean matches = nb.matches(8, TimeUnit.SECONDS);
assertEquals("Exception raised", 3, counter);
}
Теперь это работает нормально. Однако, если я утверждаю на matches
, добавив
assertTrue(matches)
Не удалось. Другими словами, критерий соответствия NotifyBuilder
никогда не выполняется, и он всегда истекает.
Почему это? Это потому, что повторы не считаются exchange
доставками?
Каков канонический способ проверки того, что повторная доставка предпринята ожидаемое число раз?