Apache Camel:我可以在没有在注释中指定端点uri的情况下使用@Produce吗?

时间:2016-07-13 10:56:50

标签: java annotations apache-camel jms

在驼峰documentation中,提到我们可以使用@Produce注释注入ProducerTemplate,如下所示。

 @Produce(uri = "activemq:foo")
    private ProducerTemplate producer;

我想知道是否有可能不在注释中指定uri并将uri传递给其sendBody方法中的生成器,如下所示,以便我可以在Util类中使用它来生成任何端点? / p>

public class JmsProducerUtils {
    @Produce
    private ProducerTemplate producer;

    public void publishMessageToEndpoint(String endpoint, String message) {

        producer.sendBody(endpoint, message);
    }
}

在使用它时是否有任何顾虑?

1 个答案:

答案 0 :(得分:0)

嗯,不用担心,它绝对可以工作 - 您可以编写一个简单的单元测试来验证它 - 但除非您的URI是在运行时动态形成的,否则我建议使用他们在文档中提到的方法,例如:有一个界面:

@InOnly
public class JmsProducer {
  void publish(String message);
}

然后将其注入您的班级,如下所示:

public class Foo {
  @Produce(uri = "activemq:foo")
  private JmsProducer fooProducer;

  @Produce(uri = "activemq:bar")
  private JmsProducer barProducer;
}