当前位置: 首页 > 知识库问答 >
问题:

在运行时获取apache camel中的endpoint

胡鸿远
2023-03-14

我正在为http请求编写一个通用的路由。而且endpoint不是静态值。路由代码:

from("direct:processRequests")
                .split(body().method("getItems"), new GroupedBodyAggregationStrategy())
                .parallelProcessing()
                .to("direct:processRequest")
       .end();


         from("direct:processRequest")
         .when(body().method("getHttpDetails").method("getCallType").isEqualTo("GET"))
            .setProperty("type",body().method("getInterfaceId"))//to identity response later
            .setHeader(Exchange.HTTP_METHOD, body().method("getHttpDetails").method("getCallType"))
            .setHeader(Exchange.CONTENT_TYPE, body().method("getHttpDetails").method("getPayLoadType"))
            .setHeader("Accept", body().method("getHttpDetails").method("getPayLoadType"))
            .to(body().method("getEndPointUri").toString())
Caused by: org.apache.camel.NoSuchEndpointException: No endpoint could be found for: ognl(simple{${body}}, getEndPointUri), please check your classpath contains the needed Camel component jar.
at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:81)
at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:211)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:107)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:113)
at org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:62)
at org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:56)
at org.apache.camel.model.ProcessorDefinition.createProcessor(ProcessorDefinition.java:483)
at org.apache.camel.model.ProcessorDefinition.createOutputsProcessorImpl(ProcessorDefinition.java:446)
at org.apache.camel.model.ProcessorDefinition.createOutputsProcessor(ProcessorDefinition.java:413)
at org.apache.camel.model.ProcessorDefinition.createOutputsProcessor(ProcessorDefinition.java:165)
at org.apache.camel.model.ExpressionNode.createFilterProcessor(ExpressionNode.java:109)
at org.apache.camel.model.WhenDefinition.createProcessor(WhenDefinition.java:74)
at org.apache.camel.model.WhenDefinition.createProcessor(WhenDefinition.java:32)
at org.apache.camel.model.ProcessorDefinition.createProcessor(ProcessorDefinition.java:483)
at org.apache.camel.model.ChoiceDefinition.createProcessor(ChoiceDefinition.java:135)
at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:534)
at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:495)
at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:219)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1069)
... 23 more

提前谢了。

共有1个答案

杜嘉木
2023-03-14

在启动过程中,RouteBuilder类中的Configure方法只调用一次来设置路由。

因此,如果您想要任何动态uri,那么就像FAQ所说的那样使用toD http://camel.apache.org/how-to-use-a-dynamic-uri-in-to.html

 类似资料:
  • 我是android的新手,不知道我做错了什么,这个类得到了经度和纬度并发送到另一个类,代码抛出了一个错误请告诉我该怎么做怎么做: public void onRequestPermissionsResult出错(int requestCode,String[]permissions,int[]grantResults

  • 问题内容: 我有一个运行良好的servlet,直到几天前。但是我唯一改变的是我用于行家的联系回购。我正在通过mvn jetty:run运行servlet 但是,当我尝试访问该站点而不是看到主页时,我看到: 我可以访问其他网址,例如/favicon.ico。但是我找不到关于此jregex / Pattern错误的任何内容,而且看起来根本没有在代码中使用jregex库。 我也没有在日志中看到任何问题。

  • 问题内容: 我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我正在使用以下条件: 这对其他JVM有用吗?有更好的方法来检查吗? 问题答案: 是每个JVM中都存在的系统属性。有两种可能的格式: Java的8或降低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211 Java的9或更高:9.0.1,11.0.4,12,12.0.1 这是提取主要版本的技巧:如果它是版本

  • 问题内容: 我们有以下课程 和这个 现在,我需要在运行时知道is是否为 。由于这是jpa自动处理的,因此我无法获取此值。 我们正在调用一个带有as参数的方法,我想避免使用它来检查它是什么类型。如果我可以做些类似的事情会更酷 问题答案: 您可以将鉴别符映射为只读属性:

  • 问题内容: 我想知道是否有可能在运行时检索该类来自的jar的版本号? 我知道可以找到该类来自的jar: 但是版本呢? (假设其不在文件名中:) 问题答案:

  • 我想知道是否可以在运行时检索类的来源的jar的版本号? 我知道有可能找到类的来源: 但是一个版本呢? (假设它不在文件名中:))