Я пытаюсь использовать Arquillian для запуска JUnit-тестов моих маршрутов Java Camel в WildFly 11.
Проблема в том, что маршрут (который расширяет RouteBuilder) начинает опрашивать брокера MQ КАК МОЖНО СКОРЕЕ, как он инициализируется (или нагревается?), То есть задолго до того, как мой тестовый код сможет запустить и выполнить макет из ("activemq: queue: myqueue") маршрута. Затем, конечно, он зависает там, потому что он пытается (верблюжий) порт по умолчанию 61616.
Я также пытался расширить DefaultCamelContext, но если я @Observe CdiCamelConfiguration и установил autoConfigureRoutes (false), и хотя неправильный опрос больше не происходит (yay), также CDI больше не происходит, и все введенные объекты являются нулевыми (buuh ) когда позже я загружаю маршрут вручную в тестовом классе.
@ApplicationScoped
class MyCamelContext extends DefaultCamelContext {
@PostConstruct
void manual() throws IOException {
setAutoStartup(false); // cool but doesn't help as camel
// dows the warmup anyway, so activemq will poll
}
static void configuration(@Observes
final CdiCamelConfiguration configuration) {
configuration.autoConfigureRoutes(false); // cool but breaks CDI
}
}
Я ничего не могу сделать в тестовом примере или наборе тестов, очевидно (они запускаются даже позже). Я мог бы (пере) определить маршрут с помощью from ("direct: blah"), но я хотел бы сохранить код маршрута таким, какой он есть. Также не помогает определение маршрута для автоматического запуска, поскольку activemq начинает опрос, как только создается компонент RouteBuilder.
Я думал о развертывании с помощью архива shrinkwrap также queue-jms.xml, но я не знаю, что я мог бы там добавить, чтобы спасти ситуацию. Или перезаписать brokerURL как-нибудь, но я не могу найти способ как.
Тем не менее, как я могу инициировать компоненты маршрутизации БЕЗ любого из них, пытающегося что-либо опросить?
Версии: Camel 2.21.0 в WildFly 11 - фактически JBoss EAP 7.1.5 с предохранителем 7.2.