调用start()命令后能否让Poller的轮询周期以等待阶段作为起始?
可以实现,只需在Poller配置中增加初始延迟参数即可。
你当前使用的fixedDelay指的是上一次轮询执行完成后到下一次轮询开始的间隔时间,默认启动后会立即执行第一次轮询,所以会出现启动就发送消息的情况。你只需要在定义Poller时添加initialDelay配置,将初始延迟值设置为和fixedDelay相同的5000ms,就能实现启动后先等待再执行第一次发送的逻辑。
修改后的代码示例如下:
@Bean public IntegrationFlow errorStateEntryPoint() { return IntegrationFlows.from( () -> new GenericMessage<String>(""), e -> e.poller(p -> p.fixedDelay(ERROR_STATE_POLLING) // 新增初始延迟配置,值和fixedDelay一致 .initialDelay(ERROR_STATE_POLLING)) .id("errorStateSourcePollingChannelAdapter") .autoStartup(false)) .channel("httpOutRequest") .get(); }
initialDelay参数的作用是指定轮询适配器启动后,第一次执行轮询操作前的等待时长,单位和fixedDelay一致为毫秒。配置完成后整个运行周期就会符合你要求的wait -> send -> wait -> send循环逻辑。
内容的提问来源于stack exchange,提问作者JBStonehenge
相关产品推荐
相关产品推荐

