我正在尝试使用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框架#9628。
camel-from: "file:/C:/in/received?move=../in/processed/#{'$'}{file:name}"