Spring streamBridge在启动时创建rabbitmq队列

Spring streamBridge在启动时创建rabbitmq队列,rabbitmq,spring-cloud-stream,Rabbitmq,Spring Cloud Stream,因为spring不推荐使用org.springframework.cloud.stream.annotation.Outputannotation。 我正在使用streamBridge的新api 我想知道启动时自动创建队列的最佳方法是什么,就像注释的行为一样 我找到了一个解决方法,使用spring.cloud.stream.function.definition=myChannel创建队列 就像这个样本一样 @Bean fun myChannel(): Supplier<F

因为spring不推荐使用
org.springframework.cloud.stream.annotation.Output
annotation。 我正在使用streamBridge的新api

我想知道启动时自动创建队列的最佳方法是什么,就像注释的行为一样

我找到了一个解决方法,使用
spring.cloud.stream.function.definition=myChannel
创建队列

就像这个样本一样

    @Bean
    fun myChannel(): Supplier<Flux<Message<String>>> = Supplier {
        Flux.empty()
    }
当我使用
@Output
注释时,队列是自动创建的


还有其他更优雅的解决方案吗?

您仍然不需要这样做(预创建队列),因为一旦您执行第一个
streamBridge.send
,目标将被解析(将创建队列)并应用您的属性。 也就是说,如果您仍然想这样做,您可以使用
spring.cloud.stream.source
属性并指向在旧版本中使用@Output标识的目标名称。例如
spring.cloud.stream.source=foo

bindings:
    myChannel-out-0:
    destination: Mystuff
    producer:
       required-groups: mychannel