2012-04-16 6 views
0

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. ミュールポーリング
  2. ファイル1「FIXEDPREFIX_1_of_2.zipは、」検出およびオープンとして(どこかのメモリに保持されますSFTPStream、それは大丈夫です)。 いくつかの相関情報が、グループ化のために保持されます:グループ、シーケンス、グループサイズ。
  3. ファイル1「FIXEDPREFIX_1_of_2.zip」再度検出されるが、
  4. ファイル2「FIXEDPREFIX_2_of_2.zip」を複製することになるため、挿入できませんが検出され、そして正しくグループサイズは、ミュールに達したと述べ
  5. を添加しました適切なメッセージセットでMessageCollectionをルーティングします。

ポイント2について、私はファイル名から情報を取得し、MuleMessage :: correlation *プロパティに入れて以降のコンポーネントで使用できるようになりました。

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

おかげで再び

ガブリエレ

答えて

1
+0

おかげでデビッド、私はより良い要件を説明するために、私の最初の投稿に詳細を追加しました。 –

+0

アグリゲータの前に冪等メッセージフィルタ(http://www.mulesoft.org/documentation/display/MULE3USER/Routing+Message+Processors#RoutingMessageProcessors-IdempotentMessageFilter)を配置して重複を削除できますか? –

+0

ありがとうございます。このフィルタは、重複を削除する際に正常に機能します。私は、ファイルのセットを連鎖させるのではなく、MessageCollectionを返すことができる単純なカスタムアグリゲータを書くだけで済むようになりました;) –

関連する問題