Spring 集成多个轮询器

Spring integration multiple poller

我有一个集成有两个不同的集成流程。因此,我将这些流程分为两个不同的 类。比方说,第一个集成流程必须每两小时工作一次,而另一个集成流程每一个小时工作一次。

    // Class1
    @Bean
    public PollerMetadata poller1() {
        return Pollers.fixedRate(2, TimeUnit.HOURS, 1).get();
    }

    // Class2
    @Bean
    public PollerMetadata poller2() {
        return Pollers.fixedRate(1, TimeUnit.HOURS, 1).get();
    }

使用此实现,应用程序 运行 失败,因为 上下文中没有可用的默认轮询器

最好的方法是什么?

您需要从透视位置指向您的 PollerMetadata 个 bean。 如果您谈论 IntegrationFlow 和某个端点轮询其中一个队列,则有一个相应的选项,例如:

.handle(..., e -> e.poller(PollerMetadata))

https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl-endpoints