在Camel注释中使用属性参数

时间:2014-10-05 21:43:37

标签: java apache-camel

我在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")

需要来自属性文件而不是硬编码。

我怎样才能做到这一点?有没有其他方法可以在不使用注释的情况下实现?

非常感谢。

2 个答案:

答案 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>