有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么在Camel 3.7.3中无法正确计算属性?

我有一条路线

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

我得到的错误是:

Failed to create route route1 at: >>> DynamicTo[${property.xyz}] <<< in route: Route(route1)[From[seda:inEvents?concurrentCon... because of Property with key [property.xyz] not found in properties from text: ${property.xyz}

看起来bean没有被执行

我使用camel:3.7.3,springboot:2.4.3,java:11

我采取了以下步骤:

  • 我读了迁移指南
  • 查看了GitHub上可用的代码片段
  • 搜索堆栈溢出
  • 与同事交谈

我研究了一个类似的问题

尽管如此,我还是无法对这个问题进行分类

我做错了什么

更新1

我添加了处理器:

.process(exchange -> {
  System.out.println("This is my property: " + exchange.getProperty("xyz"));
})

它起作用了。同时,我仍然无法使用Camel中的simpleDSL检索此属性


共 (1) 个答案

  1. # 1 楼答案

    经过几个小时的搜索没有结果,我遇到了一个old post

    要访问该属性,我需要使用"${exchangeProperty." + XYZ + "}"

    注意:

    • 它与骆驼2一起工作。X.X,所以要小心这个变化
    • 如果Spring和Camel占位符之间发生冲突,请使用$simple而不是$
    • 在骆驼3。X.X您需要检查您的属性所在的位置,并将它们重新指向exchangeProperty