Java Im使用驼峰代理如何在接口中发送头作为参数

Java Im使用驼峰代理如何在接口中发送头作为参数,java,apache-camel,Java,Apache Camel,我正在使用camel代理调用camel中的端点say direct:say public interface xyz{ public void sayhello(String body,??????); } ???我想设置标题或发送标题,可以通过绑定界面中的一个示例帮助任何人。 谢谢 Saitsh非常快速的线索 看和 然后你可以打电话 to("bean:xyz?method=sayhello(${body}, ${headers})") 或者,您可以向界面添加注释 sayhello(@

我正在使用camel代理调用camel中的端点say direct:say

public interface xyz{ 
public void sayhello(String body,??????); 
} 
???我想设置标题或发送标题,可以通过绑定界面中的一个示例帮助任何人。 谢谢 Saitsh

非常快速的线索

看和

然后你可以打电话

to("bean:xyz?method=sayhello(${body}, ${headers})")
或者,您可以向界面添加注释

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

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

应该足够了

最大的问题是,如何实例化
xyz
接口?是singleton还是每个消息都需要一个新实例,还是每个线程都需要一个新实例?但这是另一个问题:)

你应该看看。一个很好的例子:

 public void sayhello(@Header("user") String user, @Body String body, Exchange exchange) {
     exchange.getIn().setBody(body + "MyBean");
 }
除此之外,还提供了以下注释:

  • @Headers
    绑定到入站邮件头的映射
  • @OutHeaders
    绑定到出站邮件头的映射
骆驼2.16+ 使用本机代理参数绑定,如下所述:(“消息上发送的内容”部分)

以前的版本 驼峰路由代理没有标准的参数绑定方式。只能将一个字符串参数绑定到exchange正文。
但是您可以创建InvocationHandler的自定义实现,该实现将扩展Camel核心AbstractCamelInvocationHandler类,并通过重写invokeWithbody(…)方法提供所需的参数绑定


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

对此不确定。使用@EndpointInject很可能实现同样的效果-
to("bean:xyz?method=sayhello")
 public void sayhello(@Header("user") String user, @Body String body, Exchange exchange) {
     exchange.getIn().setBody(body + "MyBean");
 }