在Quarkus中显式定义Camel路径

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

当前行为:当我使用Camel运行Quarkus应用程序时,它会自动启动所有RouteBuilder扩展作为路线。
我想要实现的目标:在启动时,只有我配置的路由才会启动。
我尝试的

1.通过以下代码片段,可以显式启动CamelMainApplication,但我不知道如何控制CamelContext,例如,在这一点上,我可以配置我的路由。

@QuarkusMain
public class Main {
    public static void main(String[] args) throws Exception {
        Quarkus.run(CamelMainApplication.class, args);
    }
}

1.在Route上,我可以使用 .noAutoStartup() 在启动时禁用路由。但这意味着并非所有路由的默认设置都是在第一和第二天禁用的。我不知道在哪里激活它们,因为我不知道在Quarkus应用程序中我可以在Camel Context上的哪里获得一个手来激活路由。
1.通过我的 application.yml 中的以下内容,我可以禁用自动路由发现,但剩下的问题是我如何手动启动路由,例如在我的 QuarkusMain 类中。

quarkus:
 camel:
   routes-discovery:
     enabled: false
62lalag4

62lalag41#

我认为这是最好方法Quarkus有包含和排除路由属性作为模式这个属性是列表您可以在N中添加一个

quarkus.camel.routes-discovery.exclude-patterns=tes.Comp,tes.package.MyRoute
quarkus.camel.routes-discovery.include-patterns=test.mypackage.XX
ut6juiuv

ut6juiuv2#

我也遇到了同样的问题,最后我做了如下的事情:

@QuarkusMain
public class Main implements QuarkusApplication {

   @Inject
   OrderService orderService;

    @Override
    public int run(String... args) throws Exception {
        CamelRuntime runtime = Arc.container().instance(CamelRuntime.class).get();
        runtime.start(new String[]{});

        orderService.handleOrders(args[0]); //this would inject the camelContext and start the route. 

        return 0;
    }

相关问题