@InboundChannelAdapter中的@Poller未使用轮询器bean

时间:2018-08-21 11:48:09

标签: spring spring-boot spring-integration spring-integration-dsl

我一直在尝试将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上吗?

0 个答案:

没有答案