首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Camel Endpoint-dsl自定义组件名称

Apache Camel Endpoint-dsl自定义组件名称
EN

Stack Overflow用户
提问于 2020-06-30 13:16:29
回答 1查看 417关注 0票数 0

我正在尝试使用Apache 3 端点DSL。到目前为止这是我的密码。它可以正常工作。这是个测试,所以很简单。它从目录中读取并记录文件内容。

代码语言:javascript
运行
复制
@Component
public class TestRoute extends EndpointRouteBuilder{
    final String componentName = "file";
    final String path = "/in/";
    
    @Override
    public void configure() throws Exception {      
        FileEndpointBuilder srcFileEndpoint = file(componentName, path);        
        from( srcFileEndpoint ).log(LoggingLevel.INFO, "body, ${body}");
    }//configure    
}//TestRoute

但是当我试图更改组件的名称时。例如,最终字符串componentName = "myCustomFileComponent";

我在控制台中得到以下错误

代码语言:javascript
运行
复制
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: myCustomFileComponent:///in/ due to: No component found with scheme: myCustomFileComponent

通过这里,我了解到我可以为示例中的端点、myWMQ和myAMQ提供自定义名称。例如,路由从一个目录读取并写入另一个目录,我希望以不同的方式配置每个组件。但是,如果我指定了一个自定义componentName,我就会得到错误。因为它找不到custonName组件。

我不知道它是否相关,但是代码在Spring项目中

  • Apache版本3.4.0 Spring Boot版本2.3.1
EN

Stack Overflow用户

回答已采纳

发布于 2020-07-01 08:04:46

看来你没抓住重点。这一节解释了“同一类型的多个骆驼部件是否以不同的名称注册”。这些是camel组件,注册的不是端点的uri。

据我所知,apache camel中不能有动态路由端点,因为路由是在开始时创建的,而这些端点在运行时不会更改。

如果您需要一个从不同端点读取的路由,您可以为它们创建路由并将它们路由到相同的端点,如下所示:

代码语言:javascript
运行
复制
public class TestRoute extends RouteBuilder {

    @Override
    public void configure() {

        from(component1)
            .to("direct:myroute")

        from(component2)
            .to("direct:myroute")

        from(component3)
            .to("direct:myroute")

        from("direct:myroute")
            .log(LoggingLevel.INFO, "body, ${body}");
    }

}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62658362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档