Spring integration - агрегатор от sftp inbound

Какое наилучшее решение для объединения одного сообщения из источника входящего сообщения sftp, содержащего несколько файлов? У нас есть на удаленной машине 3 файла, которые нужно получить. После этого мы объединяем содержимое этих файлов в одно сообщение json и отправляем его вперед.

public IntegrationFlow sftpIntegrationFlowBean() {
    final Map<String, Object> headers = new HashMap<>();
    headers.put("sftpFile", "sftpFile");
    final Consumer<AggregatorSpec> aggregator = t -> {
        t.sendPartialResultOnExpiry(true);
        t.expireGroupsUponCompletion(true);
        t.processor(new CustomMessageAggregator());
    };
    return IntegrationFlows
            .from(sftpInboundMessageSource(),
                    e -> e.id("sftpIntegrationFlow").poller(pollerMetadataSftp))
            .enrichHeaders(headers).aggregate(aggregator)
            .handle(customMessageSender).get();
}

Опрос опрашивает каждые 15 минут. При запуске этого кода происходит следующее:

  1. Получить файлы и обработать один из них
  2. Через 15 минут будет обработан второй файл.
  3. Еще через 15 минут обрабатывается третий файл
  4. И, наконец, по прошествии более 15 минут сообщение отправляется по назначению.

Как все это сделать за одну операцию без задержек? Я пробовал это с FileReadingMessageSource, но получил тот же результат.

Заранее спасибо.


person Antoni Alatalo    schedule 27.09.2018    source источник


Ответы (1)


Увеличьте maxMessagesPerPoll в PollerMetadata.

person Gary Russell    schedule 01.10.2018
comment
Я вижу, что вы здесь новичок - см. stackoverflow.com/help/someone-answers - person Gary Russell; 03.10.2018