Jboss 如何配置Camel context.xml以在Camel路由上的JavaBean中执行一些具有多个参数的方法?

Jboss 如何配置Camel context.xml以在Camel路由上的JavaBean中执行一些具有多个参数的方法?,jboss,apache-camel,jbossfuse,Jboss,Apache Camel,Jbossfuse,我想在Camel(2.21)路由上的JavaBean中执行一些具有多个参数的方法。 它们的参数是骆驼消息正文中的一些元素。 正文数据类型为json、xml等。 如何配置CamelContext.xml和编码Java类?您可以执行以下操作: import org.apache.camel.Body; import org.apache.camel.Headers; @Named("demo") public class MyBean { public void processBody(

我想在Camel(2.21)路由上的JavaBean中执行一些具有多个参数的方法。
它们的参数是骆驼消息正文中的一些元素。
正文数据类型为json、xml等。

如何配置CamelContext.xml和编码Java类?

您可以执行以下操作:

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)  {
    }
}

你能提供你到目前为止所做的,以便我们能提供帮助。谢谢你,路西法。我配置了骆驼路线。首先,我将输入文件(JSON类型)设置为。其次,我将Bean设置为。我想使用消息体中的某个元素设置Bean方法,但我不知道如何设置该方法。Java bean中的某些方法使用json数据中的每个元素都有一些参数。我真正想做的是通过从消息体提取数据项来指定bean方法的参数。我不想使用太多的setHeader或setProperty组件。因此,您需要将消息体直接传递给bean参数,而不设置为标头或属性。对吗?谢谢你,路西法。没错。我需要直接将消息体传递给bean参数,而不必设置头或属性。谢谢你,塔切德科。我尝试过,但在@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){..}methydb(String name,String city,String country){..}还有一种使用setHeader的方法,但是我认为如果你增加项目的数量,你将编写大量的setHeader。错误信息如下。语法错误,插入“…Valiable Declarator”以完成FormalParameter。更新了我以前的帖子。@Headers参数缺少类型(映射)。
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")