Alex
Alex

Reputation: 1171

camel generic producer (to be routed via spring xml config)

I want to send a generic message from from java, that is then routed by camel. So far the messages always went to an activemq topic (Example 1) but in future I want to be able to change the route (i.e. sending the message to a rest webservice instead) without modifing the source code (via spring xml configuration). So I expect to do ~something like~ Example 2. How would I do this?

Example 1: (how it's done so far)

@EndpointInject(uri="activemq:topic:IMPORTANTEVENTS")
ProducerTemplate producer;
producer.sendBody("Hello world!");

Example 2: (how it is supposed to look like - more or less)

@EndpointINject(uri="myevents")
... (as above)

XML config:

<route id="SysoutRoute">
     <from  uri="myevents"/>
     <to uri="activemq:topic:IMPORTANTEVENTSS"/> 
</route>

Upvotes: 1

Views: 673

Answers (2)

Alex
Alex

Reputation: 1171

Ok got it working. It es actually quite easy by using direct: component(http://camel.apache.org/direct.html)

@EndpointInject(uri="direct:outMessage")
ProducerTemplate producer;

Now I can send messages:

producer.sendBody("Hello world!");

And route them via Spring xml config e.g. like this:

 <route id="outMessage">
    <from uri="direct:outMessage"/>
    <to uri="stream:out"/> 
    <to uri="activemq:topic:IMPORTANTEVENTS"/> 
    <to uri="restlet:http://localhost:8888/status/?restletMethod=post"/> 
 </route>

Upvotes: 0

Claus Ibsen
Claus Ibsen

Reputation: 55550

You can use property placeholders: http://camel.apache.org/using-propertyplaceholder.html - then the java source code do not need to be changed, but the uri is defined in a .properties file which you can then easily change

Upvotes: 3

Related Questions