繁体   English   中英

如何查找路由的所有端点(Apache Camel,Java)

[英]How to find all Endpoints of route (Apache Camel, Java)

在骆驼语境中,我有几条路线和许多终点。 因此需要获取由一个路由创建的所有端点:

    CamelContext context = new DefaultCamelContext();
    RouteBuilder route1 = new RouteBuilder() {
        public void configure() {
            from("file:data/inbox?noop=true")
                    .routeId("myRoute1")
                    .enrich("http://website.com/file.txt")
                    .to("file:data/outbox")
                    .to("mock:someway");
        }
    };

    RouteBuilder route2 = new RouteBuilder() {
        public void configure() {
            from("file:data/outbox?noop=true")
                    .routeId("myRoute2")
                    .to("mock:myMom");
        }
    };

    context.addRoutes(route1);
    context.addRoutes(route2);

    context.start();

    // TODO 

    context.stop();

在停止之前,我需要获取由myRoute1创建的所有端点? 例如:

1.file:// data / outbox 2.mock:// someway 3. http://website.com/file.txt 4.file:// data / inbox?noop = true

我只能将骆驼上下文的所有端点获取为:context.getEndpoints()

端点不与单个路由关联,因为它可以在多个路由之间重用。 因此,您无法真正从端点本身中找出答案。 但是,您可以做的是在添加路由之前将所有端点存储在本地列表中,然后再获取所有端点,然后比较这两个端点列表。 然后通过新路由添加所有新端点。

您可以尝试以下方法:

  1. 为您的路线指定一个routeId,以便以后进行识别。
  2. 从CamelContext的Route中获取RouteDefinition,并过滤ToDefinition对象的输出列表。

      List<ProcessorDefinition> outputProcessorDefs = exchange.getContext().getRouteDefinition("[routeId]").getOutputs(); // Iterate and get all ProcessorDefinition objects which inherit from the ToDefinition 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM