Spring 集成:从数据库中获取轮询表达式

Spring Integration : get poll expression from database

我有一个 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 表达式。有办法实现吗?

谢谢

cron 表达式在 CronTrigger 中结束。您可以开发一些服务,其中 SELECT 来自 DB 的表达式 afterPropertiesSet() 和 returns 它通过 getter。 然后为 CronTrigger 声明一个 @Bean 并在其定义期间从服务中调用 getter。

@InboundChannelAdapter 上的 @Poller 有一个 trigger 选项来引用现有的 bean。