0

我有多个供应商的应用程序。因此,我正在尝试为fixed-delaySpring Cloud Stream 中的特定供应商进行配置。例子:

应用程序.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。这个对吗?

4

1 回答 1

1

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

也就是说,请随时提出问题,以便我们考虑添加此功能

于 2021-06-07T14:22:08.407 回答