Camel隐藏中间件API使用标头发送JMS交换

时间:2014-06-19 08:18:28

标签: java spring jms apache-camel

有人知道如何在[camel pojo production] [1]中遵循这个建议:

  

我们建议您从应用程序代码隐藏中间件API,以便   下一个选项可能更合适。你可以添加@Produce   使用a注入注入点(字段或属性设置器)   ProducerTemplate或使用您在业务中使用的某些界面   逻辑。 e.g。

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");
    }
}
     

Camel将自动注入一个智能客户端代理   @Produce注释 - MyListener实例的一个实例。什么时候我们   调用此接口上的方法将方法调用转换为   对象并使用Camel Spring Remoting机制将其发送给   端点 - 在这种情况下,ActiveMQ端点排队foo;那么   呼叫者阻止响应。

但是有了标题,为了使用这一行DSL:

from("jms:activemq:toBeStored").recipientList(header("stores").tokenize(",")).parallelProcessing().ignoreInvalidEndpoints();

我已成功使用@EndpointInject

的方法进行测试
public class Foo {
  @EndpointInject(uri="activemq:foo.bar")
  ProducerTemplate producer;

  public void doSomething() {
    if (whatever) {
      producer.sendBodyAndHeader("<hello>world!</hello>", "stores","store1");
    }
  }
}
像推荐之前所描述的那样。 简而言之:如何使注入的智能客户端代理也发送我想要的标头? 感谢

0 个答案:

没有答案