Добавить маршрут верблюда во время выполнения в Java

Как добавить маршрут верблюда во время выполнения на Java? Я нашел пример Grails, но я реализовал его на Java.

У моего приложенияContext.xml уже есть определенные предопределенные статические маршруты, и я хочу добавить к нему динамические маршруты во время выполнения. Является ли это возможным? Поскольку единственный способ включить динамический маршрут – написать route.xml, а затем загрузить определение маршрута в контекст. Как он будет работать на существующих статических маршрутах? Маршрут во время выполнения

вы можете просто вызвать несколько различных API-интерфейсов в CamelContext для добавления маршрутов … что-то вроде этого

context.addRoutes(new MyDynamcRouteBuilder(context, "direct:foo", "mock:foo")); .... private static final class MyDynamcRouteBuilder extends RouteBuilder { private final String from; private final String to; private MyDynamcRouteBuilder(CamelContext context, String from, String to) { super(context); this.from = from; this.to = to; } @Override public void configure() throws Exception { from(from).to(to); } } 

см. этот модульный тест для полного примера …

https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/AddRoutesAtRuntimeTest.java

@Himanshu, Пожалуйста, взгляните на динамические параметры (другими словами, прокрутку маршрута), которые могут помочь вам динамически маршрутизировать в разные «пункты назначения» на основе определенных условий.

Проверьте ссылку на помощь динамического маршрутизатора на сайте верблюда;

http://camel.apache.org/dynamic-router.html

 from("direct:start") // use a bean as the dynamic router .dynamicRouter(method(DynamicRouterTest.class, "slip")); 

И внутри метода скольжения;

 /** * Use this method to compute dynamic where we should route next. * * @param body the message body * @return endpoints to go, or null to indicate the end */ public String slip(String body) { bodies.add(body); invoked++; if (invoked == 1) { return "mock:a"; } else if (invoked == 2) { return "mock:b,mock:c"; } else if (invoked == 3) { return "direct:foo"; } else if (invoked == 4) { return "mock:result"; } // no more so return null return null; } 

Надеюсь, поможет…

Благодарю.

  • Отображение транзакции Spring в журнале
  • Как добавить привязку к событию инициализации контекста приложения?
  • Как настроить сканирование файлов в приложении Spring Boot.exe
  • $ {employee.id} из списка в JSP throws java.lang.NumberFormatException: для строки ввода: "id"
  • Как я могу удалить одноэлементную фасоль из ApplicationContext?
  • AbstractMethodError при развертывании Spring 4.0 в Tomcat 6
  • Повторное использование весеннего контекста приложения в тестовых classах junit
  • С Spring 3.0, могу ли я сделать необязательную переменную пути?
  • Весна и hibernate: сеанс не найден для текущей темы
  • Interesting Posts

    Цвет текста ActionBar

    Гауссовский фильтр с шейдерами OpenGL

    Как создать прозрачный демонстрационный экран для Android-приложения?

    Django получает доступ к полям ManyToMany из сигнала post_save

    Обработка частичного возврата из recv () TCP в C

    Изображение в canvasе с событиями касания

    Можно ли получить значки 48×48 или 64×64 из оболочки Vista?

    Путь сбрасывается до старого значения после выключения

    Максимальное отображение окна в полноэкранном режиме на OS X

    Android: развернуть / свернуть анимацию

    Windows – Как переместить все файлы в подпапки в родительскую папку?

    Постоянная кнопка входа в расширение Google Hangouts Chrome; Не удалось войти в систему и использовать приложение.

    Проект установки VS2008: общие (для всех пользователей) файлы данных приложения?

    Объектно-C-точечная нотация с помощью методов classа?

    System.IO.FileNotFoundException: не удалось загрузить файл или сборку «X» или одну из ее зависимостей при развертывании приложения

    Давайте будем гением компьютера.