我一直在尝试将XML Spring Integration作业转换为Java,但遇到了一些困难。其中之一是,我似乎无法检测到InboundChannelAdapter上带有@Poller
注释的Poller bean。
@Bean(name = "startPeriodicTrigger")
public PeriodicTrigger startPeriodicTrigger() {
PeriodicTrigger periodicTrigger = new PeriodicTrigger(appProperties.getStartRate());
periodicTrigger.setFixedRate(true);
return periodicTrigger;
}
@Bean
public PollerMetadata startPoller(@Qualifier("startPeriodicTrigger") PeriodicTrigger startPeriodicTrigger) {
PollerMetadata pollerMetadata = new PollerMetadata();
pollerMetadata.setTrigger(startPeriodicTrigger);
return pollerMetadata;
}
@Bean
@InboundChannelAdapter(value = "initTimestampChannel", poller = @Poller("startPoller"))
public MessageSource<?> buildTasksRequest() {
MethodInvokingMessageSource source = new MethodInvokingMessageSource();
source.setObject(tasksService);
source.setMethodName("requestAllTasks");
return source;
}
我的@InboundChannelAdapter
总是在我的轮询器之前创建,因此它默认使用一些未初始化的轮询器,其值为0ms
作为fixedRate,而不是在我的{{1}中设置的30000ms
} bean。
我应该将startPeriodicTrigger
放到@Bean
上吗?