【问题标题】:Queue listener fails if queue not present Spring-Rabbit如果队列不存在,则队列侦听器失败 Spring-Rabbit
【发布时间】:2018-07-26 07:35:22
【问题描述】:

我们正在尝试使用 spring-rabbit 在我们的 Spring Boot 应用程序中创建消息侦听器。但是,如果队列不存在,我们在接收消息时会遇到问题,应用程序会抛出错误,称为被动声明。

Channel error on connection (172.13.1.3:49352 -> 172.13.1.7:5672, vhost: '/', user: 'guest'), channel 1:
message_queue_1_1  | operation queue.declare caused a channel exception not_found: no queue 'add' in vhost '/'

我们要的是主动声明一个队列,即如果队列不存在,就应该在mq里面声明。

【问题讨论】:

  • 发布一些代码。如果队列不存在,则应自动创建队列。发布一些代码监听器和配置。
  • 你用@Bean注解声明队列吗?
  • @SergiiZhevzhyk 是的。 M.Deinum 我没有创建自定义监听器或配置,我只是使用 RabbitListener

标签: spring-boot rabbitmq spring-rabbit


【解决方案1】:

要从应用程序自动在 Broker 上声明 AMQP 对象,您确实需要将它们配置为 bean,并且还需要一个特殊的 AmqpAdmin bean 来执行硬声明逻辑。文档有所有需要的解释:https://docs.spring.io/spring-amqp/docs/2.0.4.RELEASE/reference/html/_reference.html#broker-configuration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-15
    • 2017-10-25
    • 2015-12-05
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2019-09-02
    相关资源
    最近更新 更多