如何在 spring 集成上进行多线程轮询?

How to make polling multi-thread on spring integration?

我有以下 Spring 集成流程:

它从一个数据库收集记录,转换为 json 并发送到另一个数据库。

想法是有 10 个轮询器(通道 0 到 9)。每一个都是一个 pollingFlowChanN Bean。但我怀疑他们共享同一个线程。

如何在这种情况下使轮询成为多线程?

    private IntegrationFlow getChannelPoller(final int channel, final int pollSize, final long delay) {
        return IntegrationFlows.from(jdbcMessageSource(channel, pollSize), c -> c.poller(Pollers.fixedDelay(delay)
                .transactional(transactionManager)))
                .split()
                .handle(intControleToJson())
                .handle(pgsqlSink)
                .get();
    }

    @Bean
    public IntegrationFlow pollingFlowChan0() {
        return getChannelPoller(0, properties.getChan0PollSize(), properties.getChan0Delay());
    }

    @Bean
    public IntegrationFlow pollingFlowChan1() {
        return getChannelPoller(1, properties.getChan1PollSize(), properties.getChan1Delay());
    }

   ....

我假设您使用最新的 Spring 引导,它有一个 TaskScheduler 自动配置的线程:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.spring-integration。这是您的任务使用相同线程的最佳猜测。

另请参阅此处的回答: