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()我在这里试图加载。整个端点是动态的。有没有办法解决它?
在此先感谢。
感谢responding.I我试图通过(体()。方法( “getEndPointUri”),以获得URI。的toString() )。在camelContext开始时,它试图解决上述表达式,但它只能在运行时解决。即使使用toD()也是如此。无论如何,在任何EIP中都可以设置uri。 – sasidhar
使用内置到D的简单语言,例如:'toD(“$ {body.getEndpointUri()}”)'并且由于它的getter可以做得更短 - 'toD(“$ {body.endpointUri }“)' - http://camel.apache.org/simple –
它的工作。谢谢。 – sasidhar