Spring Integration: получить выражение опроса из базы данных

У меня есть источник сообщений FTP, и я хочу, чтобы пользователь мог настроить частоту опроса через приложение.

Это текущая конфигурация адаптера входящего канала

@Bean
@InboundChannelAdapter(channel = "fromSmartpath", poller = @Poller(cron = "0 15 8 ? * MON,TUE,WED,THU,FRI,SAT"))
public MessageSource<File> sftpMessageSource() throws SftpException {
    SftpInboundFileSynchronizingMessageSource source = new SftpInboundFileSynchronizingMessageSource(
            sftpInboundFileSynchronizer());
    source.setLocalDirectory(new File(Constants.LOCAL_REPOSITORY_PATH));
    source.setAutoCreateLocalDirectory(true);
    source.setLocalFilter(new FileSystemPersistentAcceptOnceFileListFilter(metaDataStore(), "metastore"));
    return source;
}

Моя цель - извлечь выражение cron из базы данных. Есть ли способ добиться этого?

Спасибо

1 ответ

Решение

Выражение cron заканчивается в CronTrigger, Вы можете разработать некоторый сервис, который выбирает выражение из БД в его afterPropertiesSet() и возвращает его через геттер. Затем вы объявляете @Bean для CronTrigger и вызовите этого геттера из сервиса во время его определения.

@Poller на @InboundChannelAdapter имеет trigger возможность ссылаться на существующий компонент.

Другие вопросы по тегам