问题描述
我有路线
String XYZ = "xyz";
from(URL_A)
.bean(PropertiesSetterBean.class)
.to("${property." + XYZ + "}")
其中 PropertiesSetterBean
是:
@Component
class PropertiesSetterBean {
public void copyProperties(@Headers Map<String,Object> headers,@ExchangeProperties Map<String,Object> properties) {
properties.put("xyz","direct:test")
}
}
我得到的错误:
未能在以下位置创建路由 route1:>>> DynamicTo[${property.xyz}]
看起来 bean
没有被执行。
我使用camel:3.7.3、spring-boot:2.4.3、java:11
我做的步骤:
而且,我仍然无法对问题进行分类。
我做错了什么?
更新 1
我添加了处理器:
.process(exchange -> {
System.out.println("This is my property: " + exchange.getProperty("xyz"));
})
它有效。与此同时,我仍然无法在 Camel 中使用 simple
DSL 检索此属性。
解决方法
经过几个小时的搜索没有结果,我遇到了一个old post。
要访问该属性,我需要使用 "${exchangeProperty." + XYZ + "}"
。
注意:
- 它适用于 Camel 2.X.X,因此请注意此更改。
- 如果 Spring 和 Camel 占位符之间发生冲突,请使用
$simple
而不是$
。 - 在 Camel 3.X.X 中,您需要检查您的属性所在的位置并将它们重新指向
exchangeProperty