我在Camel的网站上找到了这种方法,它展示了如何使用@Produce批注创建一个伪方法调用来发送消息到JMS队列:
public interface MyListener {
String sayHello(String name);
}
public class MyBean {
@Produce(uri = "activemq:foo")
protected MyListener producer;
public void doSomething() {
// lets send a message
String response = producer.sayHello("James");
}
}
但是,在我的场景中,我需要能够为不同的环境设置不同的JMS队列。因此JMS队列在:
@Produce(uri = "activemq:foo")
需要来自属性文件而不是硬编码。
我怎样才能做到这一点?有没有其他方法可以在不使用注释的情况下实现?
非常感谢。
答案 0 :(得分:4)
阅读有关使用属性占位符的文档
设置此项时,您可以在使用注释定义的uri字符串中使用占位符
@Produce(uri = "activemq:{{myQueue}}")
答案 1 :(得分:0)
使用此处描述的ProducerTemplate: http://camel.apache.org/producertemplate.html
@Bean
public class MyBean {
@Autowired
ProducerTemplate template
public void doSomething() {
// lets send a message
template.sendBody("your_mq_address", "James");
}
}
请记住在驼峰上下文中定义模板:
<camelContext xmlns="http://camel.apache.org/schema/spring" id="camelContext">
<contextScan/>
<template id="template"/>
</camelContext>