Вопрос по spring – Добавить верблюжий маршрут во время выполнения в Java

9

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

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

Ваш Ответ

2   ответа
1

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

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

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 <tt>null</tt> 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;
}

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

Благодарю.

15

чтобы добавить маршруты ... как-то так

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

Error: User Rate Limit Exceeded Himanshu Yadav
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы