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