【问题标题】:rabbitmq channel shutdown with PRECONDITION_FAILED - fast reply consumer does not existrabbitmq 通道关闭与 PRECONDITION_FAILED - 快速回复消费者不存在
【发布时间】:2018-07-27 01:51:16
【问题描述】:

当我们从 Spring Boot 服务向 rabbitmq 发布消息时,出现以下错误。这也是间歇性的,我们无法重现。

[AMQP 连接 123.11.xxx.xx:5672] 错误 [] org.springframework.amqp.rabbit.connection.CachingConnectionFactory - 通道关闭:通道错误;协议方法:#method(reply-code=406, reply-text=PRECONDITION_FAILED - 快速回复消费者不存在, class-id=60, method-id=40)

有没有人遇到过 rabbitmq 的类似问题。 请帮助我们提供您的意见。

【问题讨论】:

  • Precondition failed with channel shutdown 通常表明有东西试图重新声明队列或使用与已经存在的参数不同的参数进行交换。

标签: spring-boot rabbitmq spring-integration amqp spring-amqp


【解决方案1】:

对于因此错误而最终来到这里的任何其他人,在我的情况下,当我确保以下两项后问题得到解决:

  • 发布者(“客户端”)使用相同的渠道进行发布(发布到您发布到的任何正常队列)和从 RabbitMQ amq.rabbitmq.reply-to 队列消费
  • 消费者(“服务器”)使用相同的通道进行消费(从您在上面发布的任何正常队列)和发布到指定的 RabbitMQ reply-to 队列

很遗憾,我在任何地方都没有看到这个documented

【讨论】:

  • 所以我们需要2个客户端通道,首先发布请求,然后消费队列。我们需要 2 个服务器通道,首先消费请求,然后发布响应?
  • @ArminShoeibi 我很确定客户端需要消耗(订阅)回复队列在发布之前
【解决方案2】:

这很可能意味着请求者已超时并取消了直接回复队列中的消费者。或者,发出请求的应用程序已停止。

如果请求者也是 Spring AMQP 应用程序,则默认 replyTimeout 为 5000ms(5 秒)。如果服务器端花费的时间超过此时间,请求者将超时,您将在服务器上收到此错误。

您可以在请求的RabbitTemplate 上增加replyTimeout 属性。

编辑

Spring AMQP 2.0.x(需要 Spring Framework 5.x)使用​​寿命更长的直接回复消费者,因此您不应收到这些消息(但客户端仍会超时,并且您会在客户端上收到警告日志延迟交货到达时的侧面和日志)。

【讨论】:

  • 感谢 Gary 的快速回复。实际上,我正在尝试在开发环境中重现此内容,请您建议我如何从开发人员重新生成此内容。
  • 要么将 replyTimeout 更改为一个较小的值(例如 1 毫秒),要么在服务器端设置一个假延迟。另请参阅我的编辑。
  • 我也有 2 个队列,一个是 rpc,另一个是普通队列,只是将消息发布到队列,不会期望任何响应。我们在普通队列而不是 rpc 队列中观察到了这个问题。请您建议我如何在本地重现此问题。
  • 这毫无意义;如果您不使用 RPC,则不会尝试发送回复,因此您不会收到该错误。
  • 当 rpc 调用和正常发布到使用来自 Rabbit Connection Factory 的相同通道进行队列时,是否会出现这种情况。 rabbitmq.com/api-guide.html#channel-threads
【解决方案3】:

我在直接回复模式下遇到了完全相同的问题,我必须做的是:

  1. 在发布请求消息之前,确保回复的消费者(而不是请求)正在运行。

  2. 另外,正如文档所说:

RPC 客户端必须在自动确认模式下消费。这是因为没有回复消息的队列 如果客户端断开连接或拒绝回复,则返回 消息。

  1. 正如用户 joniba 所说,我还为发布者和消费者使用了相同的模型/渠道,但我不确定这是否确实有帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
  • 2021-11-26
相关资源
最近更新 更多