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

Spring @InboundChannelAdapter中的@Poller未使用轮询器bean,spring,spring-boot,spring-integration,spring-integration-dsl,Spring,Spring Boot,Spring Integration,Spring Integration Dsl,我一直在尝试将XMLSpring集成工作转换为Java,但遇到了一些困难。其中之一是,我似乎无法在InboundChannelAdapter上检测并使用带有@Poller注释的轮询器bean @Bean(name = "startPeriodicTrigger") public PeriodicTrigger startPeriodicTrigger() { PeriodicTrigger periodicTrigger = new PeriodicTrigger(appProperti

我一直在尝试将XMLSpring集成工作转换为Java,但遇到了一些困难。其中之一是,我似乎无法在InboundChannelAdapter上检测并使用带有
@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;
}
@Bean(name=“startPeriodicTrigger”)
公共周期触发器开始周期触发器(){
PeriodicTrigger PeriodicTrigger=新的PeriodicTrigger(appProperties.getStartate());
periodicTrigger.setFixedRate(真);
返回周期;
}
@豆子
公众PollerMetadata startPoller(@Qualifier(“startPeriodicTrigger”)PeriodicTrigger startPeriodicTrigger){
PollerMetadata PollerMetadata=新PollerMetadata();
设置触发器(启动周期触发器);
返回pollerMetadata;
}
@豆子
@InboundChannelAdapter(value=“initTimestampChannel”,poller=@poller(“startPoller”))
public MessageSource buildTasksRequest(){
MethodInvokingMessageSource=新MethodInvokingMessageSource();
source.setObject(tasksService);
source.setMethodName(“requestAllTasks”);
返回源;
}
我的
@InboundChannelAdapter
总是在轮询器之前创建的,因此它默认使用一些未初始化的轮询器,其值为
0ms
作为fixedRate,而不是在我的
startPeriodicTrigger
bean中设置的
30000ms


我应该把
@Bean
放到我的
@InboudChannelAdapter
上吗?

这是不可能的。您使用显式的
startPoller
bean名称。并且没有“一些默认的轮询器,其值为0ms”。如果你能在GitHub上分享一个简单的项目,让我们复制和播放,那将是非常棒的。ThanksIt是一个公司项目,不幸的是我不能分享整个项目。我可以分享一个更大的集成配置类示例,如果这对我的案例有帮助的话。另外,当我在
@InboudChannelAdapter
上删除@Bean时,我会加载正确的轮询器。。。但是在
这个.messagingTemplate.send(getOutputChannel(),message)中返回
MessageSource
之后,我有一个
没有合适的HttpMessageConverter
SourcePollingChannelAdapter.java
)好吧,你看,我没有告诉你我需要你的整个项目。唯一的要求是:请分享一个简单的项目来复制。
HttpMessageConverter
的问题不知何故与此无关,只会使本文中的内容更加复杂。您不应该删除该
@Bean
,因为它是
MessageSource
而不是其他可能的POJO方法调用。