Как динамически изменить cron поллера для InboundChannelAdapter в весенней интеграции - PullRequest
0 голосов
/ 13 сентября 2018

Я много осмотрелся, это моя конфигурация, как я могу динамически менять поллерон?Например, когда приложение запущено, и я изменяю cron поллера в БД, он должен быть выбран Poller в InboundChannelAdapter.

Примечание: я не использую конфигурацию Spring Cloud, поэтому @RefreshScope недействительно вариант

@Bean
@InboundChannelAdapter(channel = "sftpStreamChannel", poller = @Poller(cron = "${pollerCron}", maxMessagesPerPoll = "-1"))
public MessageSource<InputStream> sftpMessageSource()
{
    SftpStreamingMessageSource source = new SftpStreamingMessageSource(template());
    source.setRemoteDirectory(sftpRemoteDirectory);
    source.setFilter(abSftpFileFilter());
    return source;
}

1 Ответ

0 голосов
/ 13 сентября 2018

Вы не можете динамически изменять выражение cron;фреймворк предоставляет DynamicPeriodicTrigger, который можно использовать для изменения фиксированной задержки или фиксированной скорости во время выполнения (но это изменение не вступит в силу до следующего опроса).

Вы также можете обнаружить, чтоИнтеллектуальный опросщик может подойти для вашего случая использования - см. «Умный» опрос , где опросчик может принять решение о том, продолжать или нет опрос.

Вы также можете создать свойсобственные Trigger, которые обертывают CronTrigger и делегируют ему;это позволит вам изменить его во время выполнения.Но, опять же, изменения не вступят в силу до следующего опроса.

...