2017-01-30 3 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

Я бы предположил, что aggregator с обычным ReleaseStrategy будет хорошим подходом. Когда стратегия выпуска освобождает группу, если выходной процессор (@Aggregator метод при настройке таким образом) возвращает коллекцию Message<?>, они будут выпущены как отдельные сообщения.

При использовании конфигурации Java вам может быть проще использовать функцию Java DSL .aggregate(...), чем создание @Bean s.

В настоящее время pull request для стартера приложения агрегатора.

+0

Точно, что я искал, спасибо! Спасибо за подсказку метода, я предпочитаю '@ Bean', я просто лично считаю его более чистым, когда у меня много чего происходит, так как я упаковываю больше приложений в одно загрузочное приложение, а' @ Configuration' может стать довольно большим. – aturkovic

+0

Как вы можете видеть в PR, фанер агрегатора может помочь. –

 Смежные вопросы

  • Нет связанных вопросов^_^