Добавить маршрут верблюда во время выполнения в 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; } 

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

Благодарю.

  • Кварц: выражение Cron, которое никогда не будет выполнено
  • Транзакционная экономия без вызова метода обновления
  • Как тестировать блок памяти Spring-Jersey
  • Spring Boot - Как регистрировать все запросы и ответы с исключениями в одном месте?
  • С Spring 3.0, могу ли я сделать необязательную переменную пути?
  • $ {employee.id} из списка в JSP throws java.lang.NumberFormatException: для строки ввода: "id"
  • Спящий режим, настраивающий несколько источников данных и несколько сессионных заводов
  • Весна и hibernate: сеанс не найден для текущей темы
  • Как настроить сканирование файлов в приложении Spring Boot.exe
  • Interesting Posts

    Как определить кодировку файлов в OSX?

    Возможно ли создать только компоновку pinterest с Bootstrap?

    Перенос файлов хостов в домен

    Какова роль GetHashCode в IEqualityComparer в .NET?

    Стандартный способ сериализации JSON для строки запроса?

    EntityFramework – содержит запрос составного ключа

    Как я могу обернуть метод, чтобы я мог убить его выполнение, если он превышает указанный тайм-аут?

    lme4 :: lmer сообщает, что matrix с фиксированным эффектом имеет дефицит ранга, мне нужно исправить и как это сделать?

    Сравнение полнотекстовой поисковой системы – Lucene, Sphinx, Postgresql, MySQL?

    CubicCurve2D, соединяющий два экземпляра JInternalFrame

    Как обрезать пробел из строки?

    Совокупность данных в данном столбце и отображение другого столбца

    Напишите программу, чтобы найти 100 самых больших чисел из массива из 1 миллиарда чисел

    Существует ли Flip 3D в Windows 8? Если да, то какова ключевая комбинация?

    Как узнать, какая услуга использует определенный порт?

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