连接到队列或在spring-rabbitmq中创建不存在

时间:2017-03-25 16:02:10

标签: java spring-boot spring-amqp spring-rabbit spring-rabbitmq

我正在使用带有spring-rabbitmq的spring-boot。我的连接工厂在application.properties配置,看起来很不错。

我的目标是:开始检查是否存在特定名称的队列,如果缺席则创建此类队列。我不知道如何处理它。我应该在config类中创建什么bean?从我读到的应该是 RabbitAdmin ,但我不确定。你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

Reference Manual

中清楚地描述了所有内容
  

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

进一步说:

  

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

因此,您应该在应用程序上下文中声明QueueExchangeBinding bean,AmqpAdmin将关注它们在目标Broker上的定义。

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

因此,在您的情况下,您不必担心队列存在,只需在应用程序上下文中将其声明作为bean提供。