我使用驼峰代理在骆驼中调用端点说直接:说。
public interface xyz{
public void sayhello(String body,??????);
}
???我想设置标题或发送标题可以任何一个帮助与绑定接口中的示例。 谢谢 Saitsh
答案 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/bean和http://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)
使用本机描述的本机代理参数绑定:http://camel.apache.org/using-camelproxy.html("消息和#34上发送的内容;部分)。
Camel路由代理没有标准的参数绑定方式。只有一个String参数可以绑定到交换体。
但是你可以创建 InvocationHandler 的自定义实现,它将扩展Camel核心 AbstractCamelInvocationHandler 类,并通过覆盖 invokeWithbody 提供所需的参数绑定( ...)方法。
检查Camel ProxyUtil.createProxyObject(...)方法以了解代理对象的启动方式。