Весенний Облачный Поток. Список источников событий как отдельные события - PullRequest
0 голосов
/ 04 июля 2018

Я использую весенний облачный поток для поиска источников. Моя проблема в том, что я не хочу отправлять в Source.OUTPUT список событий, кроме одиночных. Какова наилучшая практика для настройки источников отдельных событий? Я придумал следующее решение. Есть ли другой способ сделать это?

@EnableBinding(Source.class)
public class SharedMailboxesPoller {
  @InboundChannelAdapter(channel = "splitterChannel", poller = @Poller(fixedDelay = "30000"))
  public List<NewMailEvent> pollNewMails() {
    ...
    if (!newMailEvents.isEmpty()) {
        return newMailEvents;
    } else {
        //if no events, it will send nothing
        return null;
    }
  }

  @Bean
  public MessageChannel splitterChannel() {
    return MessageChannels.direct().get();
  }

  @Splitter(inputChannel = "splitterChannel", outputChannel = Source.OUTPUT)
  public List<NewMailEvent> newMailEventsSplitter(List<NewMailEvent> newEvents) {
    return newEvents;
  }
}

1 Ответ

0 голосов
/ 04 июля 2018

Да, DSL будет более компактным

IntegrationFlows.from(..., e -> e.poller(...))
                .split()
                .channel(Source.OUTPUT);

Или вы можете просто возвращать отдельные события из входящего адаптера; просто установите maxMessagesPerPoll на большое число в poller, и адаптер будет вызываться несколько раз в каждом опросе, пока не вернется null.

...