首页 > 解决方案 > RabbitMQ 没有在启动应用程序时创建交换的任何原因?

问题描述

我有奇怪的 RabbitMQ 行为(当然对我而言)。

当我启动 Spring Boot Web 应用程序时,在我的配置中我试图创建 rabbit 直接交换:

@Bean
    public DirectExchange exchange() {
        return new DirectExchange(directExchangeName);
    }

但是当应用程序启动时,我在 RabbitMQ 管理中找不到这个交换器。但这很有趣,因为在 ApplicationContext 中我可以看到这个 bean。

该交换器在第一次调用后开始显示在 RabbitMQ 管理中。

我错过了什么吗?还是我的配置有问题?

标签: rabbitmqspring-rabbitrabbitmq-exchange

解决方案


你需要一个RabbitAdmin @Bean自动声明交换、队列、绑定。

而且,即使那样,声明也不会发生,直到某个组件(侦听器容器、模板)打开连接;管理员注册为连接侦听器。


推荐阅读