有人知道如何在[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");
}
}
}
像推荐之前所描述的那样。
简而言之:如何使注入的智能客户端代理也发送我想要的标头?
感谢