Spring streamBridge 在启动时创建rabbitmq 队列

时间:2021-02-04 00:40:59

标签: rabbitmq spring-cloud-stream

自从 spring 弃用 org.springframework.cloud.stream.annotation.Output 注释。 我正在使用 streamBridge 新 API。

我想知道在启动时自动创建队列的最佳方法是什么,比如注释的行为。

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

在这个示例中

    @Bean
    fun myChannel(): Supplier<Flux<Message<String>>> = Supplier {
        Flux.empty()
    }

和 application.properties:

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

当我使用 @Output 注释时,队列是自动创建的。

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

1 个答案:

答案 0 :(得分:2)

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