CSV ファイルからいくつかの行を読み取り、それらをビジネス オブジェクトに変換し、これらをバッチに集約し、結果の集約を Bean に渡しPersistenceExceptionます。どういうわけかこのように:
from(file:inputdir).split().tokenize("\n").bean(a).aggregate(constant(true), new AbstractListAggregationStrategy(){...}).completionSize(3).bean(b)
私は持っていonException(Exception.class).handled(true).to("file:failuredir").log()ます。で例外が発生した場合bean(a)、すべてが期待どおりに処理されます。 の間違った行inputdir/input.csvが に書き込まれfailuredir/input.csvます。失敗した場合bean(b)、Camel は元のメッセージの再構築に失敗したようです:
message.org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: target/failure/ID-myhostname-34516-1372093690069-0-7
HawtDBAggregationRepository を使用して、AggregationStrategy で例外を切り替えて伝播するなど、これを機能させるためにさまざまな試みを試みましuseOriginalMessageたonExceptionが、アイデアがありません。
bean(b)で見られるのと同じ動作を実現するにはどうすればよいbean(a)ですか?