Как мы можем добавить новый маршрут к нашему существующему CamelContext, который уже запущен, не останавливая наше основJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как мы можем добавить новый маршрут к нашему существующему CamelContext, который уже запущен, не останавливая наше основ

Сообщение Anonymous »

как мы можем добавить новый маршрут в мой существующий CamelContext, не останавливая основное приложение?
Например, я уже запустил контекст Camel, который имеет идентификатор маршрута с именем hello. но теперь, не останавливая наше приложение, я хочу добавить еще один маршрут с именем «пока», вызвать какую-нибудь http-службу, получить ответ и зарегистрировать его.
Я пытался получить экземпляр существующего CamelContext с помощью статическое поле, например
я добавил две вещи в свое основное приложение
  • статическое поле для хранения экземпляра CamelContext. и
  • Метод Getter (getCamelContext) для доступа к экземпляру CamelContext и возврат здесь верблюжьего контекста.
тогда у меня есть создал класс с именем DynamicRouteAdder
в нем я создал основной метод и вызвал метод 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»