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}
。
exchangeProperty.foo | Object | refer to the foo property on the exchange
使用 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}
。
exchangeProperty.foo | Object | refer to the foo property on the exchange