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
возможность ссылаться на существующий компонент.