2017-01-30 9 views
0

拒否されたメッセージをバッファするフィルタがあります。私は、述語が満たされたら、バッファリングされたメッセージを出力チャンネルに送信したいと思います。Spring Cloud Dataflowはバッファされたメッセージを出力チャネルに送信します

public class MyFilter implements MessageSelector { 

    private Buffer buff; 

    ... 

    @Override 
    public boolean accept(final Message<?> message) { 
     if (isAcceptable(message))) { 
      for (final Message<?> msg : buff.getBuffered()) { 
       // accept these as well 
      } 
      return true; 
     } else { 
      buff.put(message); 
      return false; 
     } 
    } 
} 

バッファリングされたメッセージを受け入れる方法はありますか?より良いアプローチがありますか?

答えて

1

私は、ReleaseStrategyaggregatorが良いアプローチであることを示唆しています。リリース戦略がグループを解放するとき、出力プロセッサ(その方法を設定するときは@Aggregatorメソッド)がMessage<?>のコレクションを返した場合、それらは個々のメッセージとして解放されます。

Java設定を使用する場合、@Beanを作成するよりもJava DSL .aggregate(...)関数を使用する方が簡単です。

アグリゲータアプリスターターの現在はpull requestです。

+0

まさに私が探していたものです、ありがとう!メソッドのヒントをお寄せいただきありがとうございます。私は '@ Bean'sを好んでおり、多くのアプリケーションを1つのBootアプリケーションにパッケージ化し、' @Configuration'をかなり大きくすることができたので、個人的にはもっとクリーンです。 – aturkovic

+0

PRでわかるように、アグリゲーターファクトリーBeanも役に立ちます。 –

関連する問題