为 Spring Cloud Stream 中的特定供应商配置 Poller

Configure Poller for the specific supplier in Spring Cloud Stream

我有多个供应商的申请。因此,我正在尝试为 Spring Cloud Stream 中的特定供应商配置 fixed-delay。示例:

application.yaml

    spring:
      cloud:
        function:
          definition: produce;produce2 
        stream:
          poller:
            produce: 
              fixedDelay: 10000L
            produce2:
              fixedDelay: 5000L 
          bindings:
            produce-out-0:
              destination: string-output
            produce2-out-0:
              destination: string-output-2

代码片段

    @Configuration
    public class ProducerConfiguration {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(ProducerConfiguration.class);
        
        @Bean
        public Supplier<Object> produce() {
            return () -> {
                LOGGER.info("message");
                return "message";
            };
        }
        
        @Bean
        public Supplier<Object> produce2() {
            return () -> {
                LOGGER.info("message-2");
                return "message-2";
            };
        }
    
    }

但是根据spring的文档https://docs.spring.io/spring-cloud-stream/docs/3.1.2/reference/html/spring-cloud-stream.html#_polling_configuration_properties,似乎只能为整个供应商配置一个org.springframework.cloud.stream.config.DefaultPollerProperties bean在应用程序中。这是正确的吗?

事实上,函数式编程模型目前不支持此功能,因为它确实违反了 spring-cloud-stream 设计的微服务概念,其中一个主要原则是 你只做一件事,并且把它做好,不影响别人。在您的情况下(尤其是对于源代码),您将多个微服务组合在一个 JVM 进程中,因此一个服务会影响另一个服务。

尽管如此,请随意 raise an issue 以便我们考虑添加此功能