0

我有路线

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}] <<< 在路由中:Route(route1)[From[seda:inEvents?concurrentCon... 因为 Property with key [property.xyz]在文本的属性中找不到:${property.xyz}

好像bean没有被执行。

我使用骆驼:3.7.3,spring-boot:2.4.3,java:11

我做的步骤:

  • 我阅读了迁移指南
  • 查看了 GitHub 上可用的代码片段
  • 搜索 StackOverflow
  • 和同事聊过

我调查了一个类似的问题

而且,我仍然无法对这个问题进行分类。

我究竟做错了什么?

更新 1

我添加了处理器:

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

有用。与此同时,我仍然无法simple在 Camel 中使用 DSL 检索此属性。

4

1 回答 1

1

经过几个小时的搜索没有结果,我碰到了一个旧帖子

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

笔记:

  • 它适用于 Camel 2.XX,因此请注意此更改。
  • 如果 Spring 和 Camel 占位符之间发生冲突,请使用$simple而不是$.
  • 在 Camel 3.XX 中,您需要检查属性的位置并将其重新指向exchangeProperty
于 2021-03-17T14:35:18.913 回答