RabbitMQ不';启动应用程序时不创建exchange?

RabbitMQ不';启动应用程序时不创建exchange?,rabbitmq,spring-rabbit,rabbitmq-exchange,Rabbitmq,Spring Rabbit,Rabbitmq Exchange,我有奇怪的兔子行为(当然对我来说) 当我启动spring boot web应用程序时,在我的配置中,我试图创建rabbit direct exchange: @Bean public DirectExchange exchange() { return new DirectExchange(directExchangeName); } 但当应用程序启动时,我在RabbitMQ管理中找不到此交换机。但这很有趣,因为在ApplicationContext中我可以看到

我有奇怪的兔子行为(当然对我来说)

当我启动spring boot web应用程序时,在我的配置中,我试图创建rabbit direct exchange:

@Bean
    public DirectExchange exchange() {
        return new DirectExchange(directExchangeName);
    }
但当应用程序启动时,我在RabbitMQ管理中找不到此交换机。但这很有趣,因为在ApplicationContext中我可以看到这个bean

在第一次调用该交换机后,它将开始显示在RabbitMQ管理中


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

您需要一个
RabbitAdmin
@Bean
来自动声明交换、队列和绑定


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

我还尝试使用RabbitAdmin配置所有主题和绑定。通过这种方式,所有的工作都很好,我看到了所有的队列和交换器。但是我不习惯使用RabbitAdmin,我想更容易地声明所有bean。没有RabbitAdmin有什么方法可以做到这一点吗?我试着在宠物项目中做同样的事情。在SpringBootRabbit文档中,所有没有RabbitAdmin的bean都是创建的,并且都可以正常工作;这就是它在那里工作的原因。您可以通过直接使用AMQP API手动执行此操作(从连接工厂获取连接,然后从连接获取通道,然后
queueDeclare()
然后关闭频道,连接。但只添加一个管理bean要容易得多。你确定吗?可能是我的错,但当我启动应用程序时,我在AppContext中没有找到RabbitAdmin bean。我使用spring boot。我完全确定;我是spring amqp的项目负责人。