【问题标题】:Why am I getting the RabbitMQ exchange exception?为什么我会收到 RabbitMQ 交换异常?
【发布时间】:2020-07-09 02:18:03
【问题描述】:

这是我的测试队列设置,它们不正确但有效:

mq:
  username: guest
  password: guest
  host: localhost
  port: ${QA_RABBIT_LISTENER}
  ig-smev3:
    listener:
      vhost: /
      exchangeName: igSmev3Listener
      queueName: igSmev3-ListenerQueue
      routingKey: igSmev3-Listener
    producer:
      vhost: /
      exchangeName: igSmev3Producer
      queueName: igSmev3-ProducerQueue
      routingKey: igSmev3-Producer

如果我设置

vhost: /
      exchangeName: igSmev3Producer
      queueName: igSmev3ProducerQueue
      routingKey: igSmev3Producer

我会得到一个错误:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'igSmev3Listener' in vhost '/': received 'fanout' but current is 'direct', class-id=40, method-id=10)

怎么了?

【问题讨论】:

    标签: java rabbitmq spring-rabbit rabbitmq-exchange


    【解决方案1】:

    vhost '/' 中交换 'igSmev3Listener' 的不等价 arg 'type':收到 'fanout' 但当前是 'direct'

    您已经在代理上拥有一个 igSmev3Listener 交换,其类型为 fanout,但您提供相同的名称和默认类型 - direct

    考虑在启动您的应用程序之前删除该交换。

    这感觉就像一个似曾相识的问题,具有相似的属性:How to set x-dead-letter-exchange in Rabbit?

    【讨论】:

    • 我没有交换,它只从 Docker Rabbit 容器开始
    • 我正在使用 Concordian 进行测试
    • 好的。然后你在你的应用程序的其他地方使用fanout 类型创建它...
    • 是的...我必须注意,但我没有。问题已经解决了。谢谢!
    猜你喜欢
    • 2013-11-08
    • 2013-02-10
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多