1

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 で例外を切り替えて伝播するなど、これを機能させるためにさまざまな試みを試みましuseOriginalMessageonExceptionが、アイデアがありません。

bean(b)で見られるのと同じ動作を実現するにはどうすればよいbean(a)ですか?

4

1 に答える 1

1

アグリゲーターはステートフルな EIP パターンであるため、メッセージを送信すると、新しい Exchange になります。そのため、bean(b) は、ファイル ルートから送信された元のメッセージにアクセスできません。

于 2013-06-25T13:23:18.197 に答える