我已经看了很多,这是我的配置,我如何动态地改变轮询器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;
}
字符串
1条答案
按热度按时间eeq64g8w1#
你不能动态地改变cron表达式;框架提供了一个
DynamicPeriodicTrigger
,可以用来在运行时改变固定延迟或固定速率(但是改变要到下一次轮询才生效)。您可能还发现智能轮询器可能适合您的用例-请参阅“智能”轮询,其中轮询器可以决定是否继续进行轮询。
您也可以创建自己的
Trigger
,它 Package 一个CronTrigger
并委托给它;这将允许您在运行时更改它。但是,同样,更改要到下一次轮询才生效。