Java Im使用驼峰代理如何在接口中发送头作为参数
我正在使用camel代理调用camel中的端点say direct:sayJava 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(@
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
但是您可以创建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");
}