Apache Camel - 使用来自 yaml 属性的 uri 移动文件

Apache Camel - moving file with uri from yaml properties

我正在尝试使用 Apache Camel 处理文件,处理后将其移动到特定文件夹,同时保持文件名和目录结构。

我在 application.yml 文件中的内容:

camel-from: "file:/C:/in/received?move=../in/processed/${file:name}&recursive=true&readLock=changed&readLockMarkerFile=false&delay=1000&maxDepth=2&minDepth=2"

使用Java路线如下:

@Component
@RequiredArgsConstructor
public class TestRoute extends RouteBuilder {

    @Value("${camel-from}")
    private String fromUri;

    @Override
    public final void configure() {
        from(fromUri)
        // rest of code
    }
}

如果我直接在路由中使用字符串 from,它就可以正常工作。但是,从 application.yml 文件中读取它,无论我尝试转义哪些字符,都无法正确读取 uri。 (我总是以错误结束,或者创建文件夹,例如 processed/name 而不是 ${file:name} 被解释)。

有什么想法吗?

谢谢

属性 替换需要在 SPEL 语言中进行转义,因此 Apache Camel 以原始形式获取值。你可以使用 #{'$'} 来转义它。关于使此转义序列更短/更直观,存在未决问题 spring-framework#9628

camel-from: "file:/C:/in/received?move=../in/processed/#{'$'}{file:name}"