将参数传递给camel蓝图中的bean方法

时间:2018-02-02 13:54:18

标签: apache-camel

我试图通过传递参数来调用bean的公共方法。但是我无法运行它。这是我的示例蓝图代码(我写了from子句但是这里我只粘贴了必要的代码) -

  <bean id="ProcessorRef" class="com.healthedge.customer.THC.extractor.ProcessorClass">

  <to uri="bean:ProcessorRef" />

处理器类 -

public class ProcessorClass{
    public String whatAmI(String str) {
            return "I am "+str;
        }
}

现在在上面的示例中如何使用blueprint中的参数调用whatAmI方法?TIA

2 个答案:

答案 0 :(得分:4)

您可以直接调用所需的方法

foreach

答案 1 :(得分:1)

如果你要传递给whatAmI方法的值在标题中,你可以这样做。

<to uri="bean:ProcessorRef?method=whatAmI(${header.xyz})" />

如果是常量字符串,则可以直接将字符串放在${header.xyz}

的位置

另一种选择是将whatAmI方法修改为

public class ProcessorClass{
    public String whatAmI(Exchange exchange) {
            // exchange has many methods, with which you can access headers and body.
        }
}

在这种情况下,您可以像这样编写路线

<to uri="bean:ProcessorRef?method=whatAmI" />  

就个人而言,我更喜欢第二种选择,因为它可以让您访问完整的交换对象,这将包含所有细节。