连接到队列或在 spring-rabbitmq 中不存在的情况下创建

4 java spring-rabbit spring-amqp spring-boot

我正在将 Spring Boot 与 spring-rabbitmq 一起使用。我的连接工厂已配置完毕application.properties,看起来不错。

我的目标是:启动期间检查是否存在特定名称的队列,如果不存在则创建这样的队列。我不知道如何处理它。我应该在配置类中创建什么bean?据我所知,它应该是RabbitAdmin,但我不确定。你能帮助我吗?

Art*_*lan 6

参考手册中清楚地描述了一切:

AMQP 规范描述了如何使用该协议在代理上配置队列、交换和绑定。这些可从 0.8 及更高版本规范移植的操作存在于 org.springframework.amqp.core 包中的 AmqpAdmin 界面中。

并进一步:

当 CachingConnectionFactory 缓存模式为 CHANNEL(默认)时,RabbitAdmin 实现会自动延迟声明同一 ApplicationContext 中声明的队列、交换器和绑定。

因此,您应该在应用程序上下文中声明QueueExchange和beans,并注意它们在目标 Broker 上的定义。BindingAmqpAdmin

必须注意的是,根据 AMQP 协议,如果实体已经存在于 Broker 上,则声明只是静默且幂等的。

因此,在您的情况下,您无需担心队列的存在,只需在应用程序上下文中将它们的声明提供为 bean 即可。