我使用骆驼代理如何在接口中发送标头作为参数

时间:2014-03-02 19:46:35

标签: java apache-camel

我使用驼峰代理在骆驼中调用端点说直接:说。

public interface xyz{ 
public void sayhello(String body,??????); 
} 

???我想设置标题或发送标题可以任何一个帮助与绑定接口中的示例。 谢谢 Saitsh

3 个答案:

答案 0 :(得分:2)

你应该看看http://camel.apache.org/parameter-binding-annotations.html。一个漂亮的例子:

 public void sayhello(@Header("user") String user, @Body String body, Exchange exchange) {
     exchange.getIn().setBody(body + "MyBean");
 }

除了以下注释之外:

  • @Headers绑定到入站邮件标题的地图
  • @OutHeaders绑定到出站邮件标题的地图

答案 1 :(得分:0)

非常快速的线索......

查看http://camel.apache.org/beanhttp://camel.apache.org/bean-binding.html

JndiContext context = new JndiContext();
context.bind("xyz", new XyzImp());

CamelContext camelContext = new DefaultCamelContext(context);

然后你可以打电话

to("bean:xyz?method=sayhello(${body}, ${headers})")

或者您可以为界面添加注释

sayhello(@Body String body,@Headers Map headers); 

然后

to("bean:xyz?method=sayhello(*, *)")

to("bean:xyz?method=sayhello")

应该够了......

大问题是,如何实例化xyz界面?是单例还是每个消息需要一个新实例或每个线程一个?但那是不同的问题:)

答案 2 :(得分:0)

Camel 2.16 +

使用本机描述的本机代理参数绑定:http://camel.apache.org/using-camelproxy.html("消息和#34上发送的内容;部分)。

以前的版本

Camel路由代理没有标准的参数绑定方式。只有一个String参数可以绑定到交换体。
但是你可以创建 InvocationHandler 的自定义实现,它将扩展Camel核心 AbstractCamelInvocationHandler 类,并通过覆盖 invokeWithbody 提供所需的参数绑定( ...)方法。

检查Camel ProxyUtil.createProxyObject(...)方法以了解代理对象的启动方式。