Например, я уже запустил контекст Camel, который имеет идентификатор маршрута с именем hello. но теперь, не останавливая наше приложение, я хочу добавить еще один маршрут с именем «пока», вызвать какую-нибудь http-службу, получить ответ и зарегистрировать его.
Я пытался получить экземпляр существующего CamelContext с помощью статическое поле, например
я добавил две вещи в свое основное приложение
- статическое поле для хранения экземпляра CamelContext. и
- Метод Getter (getCamelContext) для доступа к экземпляру CamelContext и возврат здесь верблюжьего контекста.
в нем я создал основной метод и вызвал метод getCamelContext основного приложения.
и добавил новый маршрут к экземпляру CamelContext.
но при запуске DynamicRouteAdder я получаю исключение nullpointerException (означает, что getCamelContext возвращает мне значение null).
(я использую Camel 3.21.0 и версию Java 11. Мое основное приложение основано на Plain Java.)
мой код DynamicRouteBuilder похож на
Код: Выделить всё
public class DynamicRouteAdder {
public static void main(String[] args) throws Exception {
CamelContext camelContext = CamelApp.getCamelContext();
System.out.println(camelContext);
//Add routes or perform operations using camelContext
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:newRoute").log("${body}");
}
});
}
и мое основное приложение
Код: Выделить всё
public class MainApp {
// Static field to hold the CamelContext instance
private static CamelContext camelContext;
public static void main(String[] args) throws Exception {
AbstractApplicationContext context = new ClassPathXmlApplicationContext("routes.xml");
camelContext = context.getBean("context", CamelContext.class);
camelContext.start();
camelContext.createProducerTemplate().sendBody("direct:initial", "Hello World");
Thread.sleep(Long.MAX_VALUE);
camelContext.stop();
context.close();
}
// Getter method to access the CamelContext instance
public static CamelContext getCamelContext() {
return camelContext;
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... eady-runni
Мобильная версия