0

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 を試してみましたが、重複が認められるため、要件に適合しません。

カバーする必要があるシナリオを詳しく説明しようとしています。

  1. Mule ポーリング (SFTP ロケーションで)
  2. ファイル1「FIXEDPREFIX_1_of_2.zip」が検出され、メモリのどこかに保持されます(開いているSFTPStreamとしては問題ありません)。グループ化のためにいくつかの相関情報が維持されます: グループ、シーケンス、グループサイズ。
  3. ファイル 1 "FIXEDPREFIX_1_of_2.zip" が再度検出されますが、重複するため挿入できません
  4. ファイル 2「FIXEDPREFIX_2_of_2.zip」が検出され、正しく追加されました
  5. グループサイズに達したと通知された場合、Mule は正しいメッセージセットで MessageCollection をルーティングします

ポイント 2. については、幸運にもファイル名から情報を取得し、それらを MuleMessage::correlation* プロパティに入れて、後続のコンポーネントがそれらを使用できるようにしました。

私はしましたが、重複は同じように処理されます。

再度、感謝します

ガブリエル

4

1 に答える 1

1

Mule 3 で使用する適切なルーターは次のとおりです: http://www.mulesoft.org/documentation/display/MULE3USER/Routing+Message+Processors#RoutingMessageProcessors-MessageChunkAggregator

于 2012-04-16T16:14:28.810 に答える