我是使用 Apache Camel 的新手。你能帮我移动文件吗?我有这样的路线:
from("file:data?noop=true?move={{package.success}}&moveFailed={{package.failed}}")
.split(ExpressionBuilder.beanExpression(new InvoiceIteratorFactory(), "createIterator"))
.streaming()
.process(new ValidatorProcessor())
.choice()
.when(new Predicate() {
@Override
public boolean matches(Exchange exchange) {
..;
}
})
.to("jpa://...?consumer.transacted=true")
.otherwise()
.aggregate(header(PropertyNameConstants.AGGREGATOR_HEADER), new ErrorsAggregationStrategy())
.completionPredicate(new Predicate() {
@Override
public boolean matches(Exchange exchange) {
...;
}
})
.to("smtps://smtp.gmail.com?username={{remote.e-mail}}&password={{remote.password}}");
因此,应将有错误的文件移至“失败”目录,将没有错误的文件移至“成功”目录。我尝试在聚合所需消息后生成异常(在解析有错误的文件时),以便将文件移动到目录“失败”,但所有文件都移动到目录“成功”,即使出现异常。
如果我在聚合器之前抛出异常,文件移动到“失败”目录但最后一个“到”(发送邮件)不起作用。