camel http endpoint forming url dynamically

2020-07-23 06:39发布

问题:

Guys I am trying to use

{
from("direct:a").to (someUrl).processor(new Processor(){

   @Override
   public void process(Exchange arg0) throws Exception
   {
      // do something
   }

});


where someUrl is of the type http://xyz.com/{id}?test=<value1>&test1=<value2>
}

and this url will change on every request to the route.

What i have already tried. Passing params as headers and try to access in the route using the header("test") and using ${in.header.test} both doesn't seem to work.

any suggestions will be greatly helpful.

回答1:

See this FAQ about dynamic to endpoints in Camel: https://camel.apache.org/manual/latest/faq/how-to-use-a-dynamic-uri-in-to.html



回答2:

From camel 2.16 you can do things like this -

from("direct:start")   
   .toD("${header.foo}");

Refer : http://camel.apache.org/message-endpoint.html



回答3:

You can use camel property place holder

http://camel.apache.org/using-propertyplaceholder.html

<camelContext trace="false" xmlns="http://camel.apache.org/schema/spring">
    <propertyPlaceholder location="config/AuditJMSConfig.properties" id="properties" />
    <route id="crudRoute">
        <from uri="activeMQ:queue:{{speedwing.activemq.auditqueue}}/>
    </route>                                                                                    where speedwing.activemq.auditqueue is the property name defined in the peroperties file.

you can use the same for <to uri="" also