Mule ESB CE 3.2.1で、必要に応じて再シーケンシングするために、いくつかのcsvインバウンドファイルをメモリ内に集約する必要があります。Mule ESB CEでファイルを集約する方法CE
この種のロジックはどのように実装できますか?
Iは、メッセージチャンキング・アグリゲータ、ルータと試みたが、XSDスキーマは、このような構成を認めていないため、それが起動時に失敗します。
<message-chunking-aggregator-router timeout="20000" failOnTimeout="false" >
<expression-message-info-mapping correlationIdExpression="#[header:correlation]"/>
</message-chunking-aggregator-router>
私もインバウンドメッセージに鉱山相関IDを添付しようとしました、その後、カスタム・アグリゲーターによってそれらを処理するが、私はミュールが内部で構成されたキーを使用していることを見つけた:
Serializable key=event.getId()+event.getMessage().getCorrelationSequence();//EventGroup:264
内部IDは(も相関シーケンスが正しい場合)毎回異なります。この方法、私が期待していた通り、Muleは相関シーケンスだけを使用しません同じメッセージが何度も処理されます。
最後に、カスタムアグリゲータを書き直すことができますが、私はより統合されたテクニックを使いたいと思います。事前に
おかげで、
ガブリエレ
UPDATE
私は、メッセージのチャンク・アグリゲータで試してみたが、それは重複を認めているとして、それは、私の要件を適合しません。
私は細部に私がカバーする必要があるシナリオ試してみてください。(SFTPの場所に)
- ミュールポーリング
- ファイル1「FIXEDPREFIX_1_of_2.zipは、」検出およびオープンとして(どこかのメモリに保持されますSFTPStream、それは大丈夫です)。 いくつかの相関情報が、グループ化のために保持されます:グループ、シーケンス、グループサイズ。
- ファイル1「FIXEDPREFIX_1_of_2.zip」再度検出されるが、
- ファイル2「FIXEDPREFIX_2_of_2.zip」を複製することになるため、挿入できませんが検出され、そして正しくグループサイズは、ミュールに達したと述べ
- を添加しました適切なメッセージセットでMessageCollectionをルーティングします。
ポイント2について、私はファイル名から情報を取得し、MuleMessage :: correlation *プロパティに入れて以降のコンポーネントで使用できるようになりました。
私はしましたが、重複は同じように処理されます。
おかげで再び
ガブリエレ
おかげでデビッド、私はより良い要件を説明するために、私の最初の投稿に詳細を追加しました。 –
アグリゲータの前に冪等メッセージフィルタ(http://www.mulesoft.org/documentation/display/MULE3USER/Routing+Message+Processors#RoutingMessageProcessors-IdempotentMessageFilter)を配置して重複を削除できますか? –
ありがとうございます。このフィルタは、重複を削除する際に正常に機能します。私は、ファイルのセットを連鎖させるのではなく、MessageCollectionを返すことができる単純なカスタムアグリゲータを書くだけで済むようになりました;) –