Mule ESB CE 3.2.1 で、必要に応じてメモリ内の多数の csv インバウンド ファイルを集約し、それらを並べ替える必要があります。
この種のロジックをどのように実装できますか?
message-chunking-aggregator-router を試してみましたが、xsd スキーマがそのような構成を許可しないため、起動時に失敗します。
<message-chunking-aggregator-router timeout="20000" failOnTimeout="false" >
<expression-message-info-mapping correlationIdExpression="#[header:correlation]"/>
</message-chunking-aggregator-router>
また、自分の相関 ID をインバウンド メッセージに添付して、カスタム アグリゲータで処理しようとしましたが、Mule が内部で以下で構成されるキーを使用していることがわかりました。
Serializable key=event.getId()+event.getMessage().getCorrelationSequence();//EventGroup:264
内部 ID は毎回異なります (相関シーケンスが正しい場合も同様です): このように、Mule は予想どおり相関シーケンスのみを使用せず、同じメッセージが何度も処理されます。
最後に、カスタム アグリゲーターを書き直すことができますが、より統合された手法を使用したいと考えています。
前もって感謝します、
ガブリエル
アップデート
message-chunk-aggregator を試してみましたが、重複が認められるため、要件に適合しません。
カバーする必要があるシナリオを詳しく説明しようとしています。
- Mule ポーリング (SFTP ロケーションで)
- ファイル1「FIXEDPREFIX_1_of_2.zip」が検出され、メモリのどこかに保持されます(開いているSFTPStreamとしては問題ありません)。グループ化のためにいくつかの相関情報が維持されます: グループ、シーケンス、グループサイズ。
- ファイル 1 "FIXEDPREFIX_1_of_2.zip" が再度検出されますが、重複するため挿入できません
- ファイル 2「FIXEDPREFIX_2_of_2.zip」が検出され、正しく追加されました
- グループサイズに達したと通知された場合、Mule は正しいメッセージセットで MessageCollection をルーティングします
ポイント 2. については、幸運にもファイル名から情報を取得し、それらを MuleMessage::correlation* プロパティに入れて、後続のコンポーネントがそれらを使用できるようにしました。
私はしましたが、重複は同じように処理されます。
再度、感謝します
ガブリエル