【问题标题】:Using placeholders使用占位符
【发布时间】:2022-01-18 11:38:34
【问题描述】:

我有路线

from("direct:standardLetter")
            .toD("file://standardReceived?fileName=${header.filename}");

我想把我的 uris 放在 YAML 中。 但是我放的时候有问题

from("direct:standardLetter") .toD("{{endpoints.writer-routes.out.standard-output-file.uri}}")

在这样的 YAML 文件中

endpoints:
  writer-routes:
    out:
      standard-output-file:
        id: "standard-output-file"
        uri: "file://standardReceived?fileName=${header.filename}"

如何克服这个问题?

【问题讨论】:

  • Documentation 没有说明能够使用带有属性占位符的 yaml 文件。取而代之的是使用.properties 文件。这是否与yaml-dslcamel-k 或其他相关?
  • 问题是 springboot 在启动时想要解析属性以将它们注入应用程序。请记住启动应用程序需要属性/yaml 值。因此,它们在应用程序运行之前就已解决。但是 header.filename "property" 仅在骆驼运行时可用,该值是交换的属性,仅在路由运行时可用。因此它不会正确翻译,因为在启动期间没有交换,因为骆驼还没有执行。您不能像这样从属性/yaml 文件中引用运行时值。

标签: yaml apache-camel placeholder


【解决方案1】:

看起来您将目标文件名设置为标题filename。然后在 URI 中使用它。

如果您使用标头名称 CamelFileName 代替,您可以省略 URI 中的 fileName 选项,因为这是 Camel 的标准标头名称,因此如果没有其他内容覆盖它,则会自动使用.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2013-04-23
    • 2019-07-25
    • 2019-02-25
    • 2017-02-16
    • 2013-10-16
    相关资源
    最近更新 更多