Camel - 使用之前设置的 属性 作为方法的参数

Camel - Use previously set property as a parameter to method

使用 Camel 3.5.0.

我需要为 属性 设置一个值,并在进行一些转换后,通过 Camel 的方法 bean 使用该 属性 作为方法调用中的参数。

from("direct:route1")
        .setProperty("myProperty", method(MyBean.class, "myMethod"))
        .transform(method(transformerBean, "transformMethod"))
        .bean(MyBean.class,
                "otherMethod(<<HERE I WANT TO PASS THE PREVIOUSLY SET PROPERTY 'myProperty'>>)")
        .to("direct:route2");

还有一个选择。如果我不使用 setProperty 方法,而是使用 setHeader,同样来自 Camel,使用 header 作为参数的方法是 ${headers.nameOfHeaderKey}。这很有魅力。但是当我尝试使用 属性 功能时,我无法检索它并将其作为方法参数传递。

换句话说,当我尝试这个时:${properties.myProperty} 我得到这个错误:

Caused by: org.apache.camel.language.simple.types.SimpleParserException: Unknown function: properties.myProperty
    at org.apache.camel.language.simple.ast.SimpleFunctionExpression.createSimpleExpression(SimpleFunctionExpression.java:247)
    at org.apache.camel.language.simple.ast.SimpleFunctionExpression.createExpression(SimpleFunctionExpression.java:54)
    at org.apache.camel.language.simple.ast.SimpleFunctionStart.doCreateLiteralExpression(SimpleFunctionStart.java:69)
    at org.apache.camel.language.simple.ast.SimpleFunctionStart.createExpression(SimpleFunctionStart.java:59)
    at org.apache.camel.language.simple.SimpleExpressionParser.createExpressions(SimpleExpressionParser.java:164)
    at org.apache.camel.language.simple.SimpleExpressionParser.doParseExpression(SimpleExpressionParser.java:87)
    at org.apache.camel.language.simple.SimpleExpressionParser.parseExpression(SimpleExpressionParser.java:54)
    ... 98 common frames omitted

有什么想法吗?

Exchange 属性 的语法是 ${exchangeProperty.myProperty}

参见Simple language docs

exchangeProperty.foo | Object | refer to the foo property on the exchange