我想从java发送一个通用消息,然后由camel路由。到目前为止,消息总是转到activemq主题(示例1),但将来我希望能够更改路由(即将消息发送到休息Web服务而不修改源代码)(通过spring xml配置)。所以我希望做〜像〜示例2.我该怎么做?
示例1 :(到目前为止它是如何完成的)
@EndpointInject(uri="activemq:topic:IMPORTANTEVENTS")
ProducerTemplate producer;
producer.sendBody("Hello world!");
示例2 :(它应该是什么样子 - 或多或少)
@EndpointINject(uri="myevents")
... (as above)
XML配置:
<route id="SysoutRoute">
<from uri="myevents"/>
<to uri="activemq:topic:IMPORTANTEVENTSS"/>
</route>
答案 0 :(得分:3)
您可以使用属性占位符:http://camel.apache.org/using-propertyplaceholder.html - 然后不需要更改java源代码,但是uri在.properties文件中定义,然后您可以轻松更改
答案 1 :(得分:0)
好的让它运转起来。通过使用direct:component(http://camel.apache.org/direct.html)
实际上非常简单@EndpointInject(uri="direct:outMessage")
ProducerTemplate producer;
现在我可以发送消息:
producer.sendBody("Hello world!");
并通过Spring xml配置路由它们,例如像这样:
<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>