【问题标题】:Property placeholder doesn't convert属性占位符不转换
【发布时间】:2026-02-21 15:55:01
【问题描述】:

我正在向我的路线注入一个地图,其中键是一个每次都不同的属性,而值是我想下次发送交换的端点,问题是当我发送占位符以获取方法时映射它不会转换。

from(REMOVE_FAILED_FILE_FROM_SFTP).routeId(REMOVE_FAILED_FILE_FROM_SFTP_ID)
            .to(buildSftpUri("${body.getFilePath()}", "${exchangeProperty.NetworkName}"))


private String buildSftpUri(String filePath, String network) {
    return format(
            map.get(network),
            filePath
    );

当我注入特殊情况并使用它而不是 map 时,一切正常

private String buildSftpUri(String filePath, String network) {
    return format(
            sftpUri,
            filePath
    );

【问题讨论】:

  • 您必须使用企业集成模式,该模式使用表达式计算动态 URI,例如 ToD or Recipient List 模式。

标签: java spring-boot apache-camel spring-camel


【解决方案1】:

to URI 在 Camel 启动时计算,然后静态“烘焙”到您的路由中。它在运行时不会改变。

要在路由中使用动态 URI,您必须使用 dynamic TO (.toD) 或(如 cmets 中所述)像 Recipient List 这样的 EIP。

【讨论】: