Apache Camel-从yaml属性中使用uri移动文件

问题描述 投票:1回答:1

我正在尝试使用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
    }
}

如果我直接在路由中使用字符串,则效果很好。但是,从application.yml文件读取它,无论我尝试转义哪个字符,我都无法正确读取uri。 (我总是以错误告终,或者创建诸如处理/名称之类的文件夹,而不是被解释为$ {file:name})。

有什么想法吗?

谢谢

apache-camel yaml dsl spring-camel
1个回答
2
投票

属性替换需要以SPEL语言进行转义,因此Apache Camel以原始格式获取值。您可以使用#{'$'}对其进行转义。关于使此转义序列更短/更直观,存在公开问题spring-framework#9628

camel-from: "file:/C:/in/received?move=../in/processed/#{'$'}{file:name}"
© www.soinside.com 2019 - 2024. All rights reserved.