【问题标题】:How can I configure Camel context.xml to execute some methods with multi arguments in java bean on Camel route?如何配置 Camel context.xml 以在 Camel 路由上的 java bean 中执行一些具有多参数的方法?
【发布时间】:2018-07-25 03:43:26
【问题描述】:

我想在 Camel(2.21) 路由的 java bean 中执行一些具有多参数的方法。
他们的论点是骆驼消息正文中的一些元素。
正文数据类型为 json,xml,...等
如何配置 CamelContext.xml 和编写 Java 类?

【问题讨论】:

  • 你能提供你到目前为止所做的事情,以便我们提供帮助。
  • 谢谢Lucifer。我配置了骆驼路线。首先,我将输入文件(JSON类型)设置为。其次,我将 Bean 设置为 。我想使用消息正文中的某些元素设置 Bean 方法,但我不知道如何设置方法。Java bean 中的某些方法使用 json 数据中的每个元素都有一些参数。
  • 我真正想做的是通过从消息体中提取数据项来指定bean方法的参数。我不想使用很多setHeader或setProperty组件。
  • 因此您需要将消息正文直接传递给 bean 参数,而无需设置到标头或属性中。对吗
  • 谢谢你,Lucifer。没错。我需要将消息体直接传递给 bean 参数,而不需要设置到 headers 或 property。

标签: jboss apache-camel jbossfuse


【解决方案1】:

你可以这样做:

import org.apache.camel.Body;
import org.apache.camel.Headers;

@Named("demo")
public class MyBean {

    public void processBody(@Body XmlType jaxbBody, @Headers Map<String, Object> params)  {
    }

    public void processBody(@Body InputStream streamBody, @Headers Map<String, Object> params)  {
    }

    public void processBody(@Body String stringBody, @Headers Map<String, Object> params)  {
    }
}

然后在骆驼路线中,发布适当的正文和参数:

from("direct:demoString")
    .setBody( constant("StringValue") )
    .setHeader("param1", constant(false) )          
    .to("bean://demo?method=processBody")

from("direct:demoJaxb")
    .setBody( constant(myObject) )
    .setHeader("param1", constant(true))
    .setHeader("param2", constant("APPEND"))            
    .to("bean://demo?method=processBody")

【讨论】:

  • 谢谢你,TacheDeChoco。我尝试了一下,但在@Headers 参数处发生了一些错误。这一次,我想做以下事情。 [from : Input data] JSON data -> {Order:{Customer:{name:xxxx,city:yyyy,country:zzzz}}} [to : pass to Java bean method] methodA(String name,String city){. ...} methidB(String name,String city,String country){...} 还有一种使用setHeader的方法,但是我认为如果你增加item的数量你会写很多setHeader。
  • 报错信息如下。语法错误,插入"...Valiable Declaratolr" 来完成FormalParameter。
  • 更新了我之前的帖子。 @Headers 参数缺少类型(地图)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多