Camel 分手路线

nfeuvbwi  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(142)

我有一个RouteBuilder类,它已经变得相当大,有许多直接路由:from("direct:...").
每种途径都在执行一种特定类型的身体浓缩。
RouteBuilder工作正常,但最好将其分成几个单独的类,每个类都特定于正在执行的丰富类型。
这些类将是同一工作流的一部分,只是在不同的类中定义。
这是可能的吗?如果是的话,谁能给我举个例子?

hc2pp10m

hc2pp10m1#

正如Screwtape所评论的,你可以有任意多个RouteBuilder类来构建1个CamelContext。因为你使用Direct Routes,所以它们需要在同一个CamelContext中,如果它们在同一个部署单元中,这通常是正确的。
如果您使用Spring-Boot and the Camel-Starter,则即使您将RouteBuilder声明为@Component,它们也会被自动发现。
不同RouteBuilder中的simple example with multiple Direct Routes

0kjbasz6

0kjbasz62#

我也想知道这个问题的答案,但我也找不到任何例子--所以我试着做了一个概念验证(使用Camel 3):
RouteBuilderA.java

public class RouteBuilderA extends RouteBuilder {
    @Override
    public void configure() {
        from("timer:myTimer?fixedRate=true&period=1000")
            .setBody().constant("ROUTE A")
            .log("${body}")
            .to(RouteBuilderB.INPUT);
    }
}

RouteBuilderB.java

public class RouteBuilderB extends RouteBuilder {
    public static final String INPUT = "direct:input";

    @Override
    public void configure() {
        from(INPUT)
                .setBody().constant("ROUTE B")
                .log("${body}");
    }
}

MainRouteBuilder.java

public class MainRouteBuilder extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        getContext().addRoutes(new RouteBuilderA());
        getContext().addRoutes(new RouteBuilderB());
    }
}

我还没有研究使用这个设置的缺点,即它对错误处理、消息交换模式等意味着什么,但这似乎是一个开始。

相关问题