Маршрут тестирования из задания Quartz cron в Apache Camel

У меня есть маршрут Camel, который выглядит примерно так:

public class CamelReaderRoute extends RouteBuilder {

@Override
public void configure() throws Exception {
    from("quartz://myjob?cron=0+0/5+*+*+*+?")
          //....(some more content)
          .routeId("MyCamelRoute");
}

В основном Quartz «запускает» маршрут каждые пять минут. При модульном тестировании этого маршрута он не сработает, если время не будет точно 00:00, 00:05 или 00:10 и так далее.

Итак, как я могу изменить конечную точку, используемую в «от», чтобы маршрут запускался немедленно? Вот мой тестовый класс:

public class CamelRouteTest extends CamelTestSupport {

@Test
public void shall_run_the_route_or_something() {
    context.getRouteDefinition("MyCamelRoute")
            .adviceWith(context, new AdviceWithRouteBuilder() {
                @Override
                public void configure() throws Exception {
                    //something should be done here?                       
                }
            });

Я вижу, что в Camel 2.9 я могу использовать replaceFromWith внутри моего метода configure, но из-за зависимостей и тому подобного я застрял на Camel 2.8. Была ли у них какая-либо форма replaceFromWith до версии 2.9?


person KimHafr    schedule 15.02.2012    source источник


Ответы (1)


есть несколько вариантов, один из них - установить параметр кварца "fireNow=true" для вызова при запуске маршрутов (хотя он также будет делать это при развертывании). В противном случае просто разбейте маршрут кварца, чтобы можно было вызвать обработку напрямую...

from("quartz://myjob?cron=0+0/5+*+*+*+?")
    .to("direct:process");

from("direct:process")...

Затем в вашем модульном тесте... вызовите прямой маршрут и т.д.

template.sendBody("direct:process",null);
person Ben ODay    schedule 15.02.2012