Добавить маршрут верблюда во время выполнения в 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 в журнале
  • AbstractMethodError при развертывании Spring 4.0 в Tomcat 6
  • Class Conflict при запуске Java-проекта: ClassMetadataReadingVisitor имеет интерфейс org.springframework.asm.ClassVisitor как суперclass
  • Кварц: выражение Cron, которое никогда не будет выполнено
  • Что делает java: comp / env / do?
  • Недействительность сессии JPA EntityManager
  • Spring Boot - Как регистрировать все запросы и ответы с исключениями в одном месте?
  • Как вставить в @FacesValidator с помощью @EJB, @PersistenceContext, @Inject, @Autowired
  • Как я могу удалить одноэлементную фасоль из ApplicationContext?
  • Interesting Posts

    Как получить доступ к определенным исходным данным на диске из java

    Intent URI для запуска приложения Gmail

    Excel 2010: Формула для суммы и даты возврата

    Изменение отображения по умолчанию для строки «не анализировано» в Elasticsearch

    Scripting: что проще всего извлечь значение в теге XML-файла?

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

    Пользовательский раздел app.config с простым списком элементов «добавить»

    Как ограничить доступ к API конечных точек Google App Engine только для моих приложений для Android?

    Анализ устаревших временных меток в локальное время (до UTC) Во время наблюдения за летним временем

    Unity игровой менеджер. Скрипт работает только один раз

    Почему Facebook Graph API говорит, что моя учетная запись неактивна?

    Как увеличить размер пути к файлу в Windows 7?

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

    Импорт веб-скрепок на локальный веб-сайт

    Единичное тестирование Директива AngularJS с шаблономUrl

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