私は 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}}");
したがって、エラーのあるファイルは「失敗」ディレクトリに移動し、エラーのないファイルは「成功」ディレクトリに移動する必要があります。必要なメッセージを集約した後 (エラーのあるファイルの解析中に) 例外を生成しようとしたため、ファイルをディレクトリに移動するのに「失敗」しましたが、例外があったとしても、すべてのファイルがディレクトリに「成功」しました。
アグリゲーターの前に例外をスローすると、ファイルは「失敗した」ディレクトリに移動しましたが、最後の「to」(メールの送信) は機能しません。