【问题标题】:EasyNetQ classic queue on RabbitMq 3.8RabbitMq 3.8 上的 EasyNetQ 经典队列
【发布时间】:2020-03-11 16:47:58
【问题描述】:

由于 RabbitMq 版本 3.8.0 队列默认使用 x-queue-type: classic 创建,这似乎导致 EasyNetQ 出现错误。

运行下面的sn -p会触发错误

this.bus.Receive(queueName, onMessage);

错误

The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=406, text='PRECONDITION_FAILED - inequivalent arg 'x-queue-type' for queue 'TheQueue' in vhost '/': received none but current is the value 'classic' of type 'longstr'', classId=50, methodId=10

我做了一些测试,我知道问题出在队列类型上,我希望能够将 EasyNetQ 连接到这种队列,但我在文档中找不到有关如何执行此操作的任何参考。

【问题讨论】:

  • 最初声明的队列在哪里?问题是您的easynetq 正在尝试重新声明一个已经存在的具有不同参数的队列。这里没有足够的信息来确定发生的位置。
  • @theMayer 提出了一个很好的观点。这个队列是在升级到 3.8 之前声明的吗?我希望能够重现并修复此问题。

标签: rabbitmq easynetq


【解决方案1】:

感谢您报告此事。这实际上是 RabbitMQ 中的一个错误。我创建了一个问题报告here,如果您想继续关注。该修复程序将在版本 3.8.2 中发布。


注意:RabbitMQ 团队会监控 rabbitmq-users mailing list,并且有时只回答 StackOverflow 上的问题。

【讨论】:

  • 哎呀!我在升级 3.8.1 时得到了回归,QA 测试集群运行良好,因为队列已经在 3.7.4 中创建,升级没有任何问题。
【解决方案2】:

在 3.8.0 中遇到了同样的问题。 我在 3.8.23 中验证 - 问题已解决。 我正在关注本教程。 https://medium.com/swlh/guide-to-nest-js-rabbitmq-microservices-e1e8655d2853 它明确提到使用 3.8.2。我仍然厌倦了 3.8.0 并遇到了问题。

【讨论】:

    猜你喜欢
    • 2013-07-05
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多