运行

2017-09-13 24 views
0

我写HTTP requests.and端点的通用路由过程中获取端点apche的骆驼是不是路线静态value.Code:运行

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()) 

在这里,我想从body.But获得端点截至目前它失败例外:

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 

我知道我们可以使用TOD()用于动态endpoints.But为此,我们需要端点的某些部分存在于TOD()我在这里试图加载。整个端点是动态的。有没有办法解决它?

在此先感谢。

回答

0

RouteBuilder类中的configure方法仅在启动期间被调用一次以设置路由。

所以,如果你想要的任何动态URI,然后使用TOD作为FAQ说 http://camel.apache.org/how-to-use-a-dynamic-uri-in-to.html

+0

感谢responding.I我试图通过(体()。方法( “getEndPointUri”),以获得URI。的toString() )。在camelContext开始时,它试图解决上述表达式,但它只能在运行时解决。即使使用toD()也是如此。无论如何,在任何EIP中都可以设置uri。 – sasidhar

+0

使用内置到D的简单语言,例如:'toD(“$ {body.getEndpointUri()}”)'并且由于它的getter可以做得更短 - 'toD(“$ {body.endpointUri }“)' - http://camel.apache.org/simple –

+0

它的工作。谢谢。 – sasidhar