如何在spring集成中动态更改InboundRightelAdapter的poller cron

juud5qan  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(37)

我已经看了很多,这是我的配置,我如何动态地改变轮询器cron?如,当应用程序运行时,我改变了数据库中的轮询器cron,它应该被InboundDataAdapter中的轮询器拾取。
注意:我没有使用spring cloud config,所以@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;
}

字符串

eeq64g8w

eeq64g8w1#

你不能动态地改变cron表达式;框架提供了一个DynamicPeriodicTrigger,可以用来在运行时改变固定延迟或固定速率(但是改变要到下一次轮询才生效)。
您可能还发现智能轮询器可能适合您的用例-请参阅“智能”轮询,其中轮询器可以决定是否继续进行轮询。
您也可以创建自己的Trigger,它 Package 一个CronTrigger并委托给它;这将允许您在运行时更改它。但是,同样,更改要到下一次轮询才生效。

相关问题