本文说明消息队列RabbitMQ版客户端调用AMQP协议时返回的错误码,您可以根据错误码信息与解决方案自助排查错误。

返回信息示例

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=ExchangeNotExist, ReqId:5FB4C999314635F952FCBFF6, ErrorHelp[dstQueue=XXX_test_queue,srcExchange=Producer.ExchangeName,bindingKey=XXX_test_bk, http://mrw.so/6rNqO8], class-id=50, method-id=20)
    at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:516)
    at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:346)
    at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:182)
    at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:114)
    at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:672)
    at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:48)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:599)
    at java.lang.Thread.run(Thread.java:748)

返回信息说明

参数 描述 示例值
reply-code 返回码。 404
reply-text 返回信息。
  • ExchangeNotExist:错误原因。
  • ReqId::请求ID。
  • ErrorHelp:错误辅助排查信息。包括:
    • 发生错误时的相关元数据信息。
    • AMQP协议方法返回信息参考文档链接。
    注意 为提高性能并减少内存开销,BasicPublish接口发生错误时,ErrorHelp只提供msgId,而不提供kv结构的错误辅助排查信息,您可以根据msgId来排查。
reply-text=ExchangeNotExist, ReqId:5FB4C***************, ErrorHelp[dstQueue=XXX_test_queue,srcExchange=Producer.ExchangeName,bindingKey=XXX_test_bk,http://mrw.so/6rNqO8]
class-id 类ID(与开源RabbitMQ相同)。 50
method-id 方法ID(与开源RabbitMQ相同)。 20

返回错误码列表

返回码 描述 解决方案
200 请求成功。 无。
403 权限错误。 确保您的RAM用户已被授予相应权限。更多信息,请参见RAM权限策略
404 资源不存在。 确保资源已经存在并符合预期。
406 预检查失败。
说明 预检查失败通常是因为调用AMQP协议方法时参数赋值错误。例如,为不能为空值的参数赋值为空值。或者,在重新声明某一资源时,同一参数的前后赋值不一致。
确保调用AMQP协议方法时的入参正确。
503 无效的命令。 停止使用消息队列RabbitMQ版当前不支持的AMQP协议方法或Exchange类型。
530 不允许的操作。 建议您进行流量控制,确保不超过消息队列RabbitMQ版的使用限制。更多信息,请参见使用限制
541 服务端内部错误。 根据返回信息的错误原因定位问题后,提交工单联系消息队列RabbitMQ版技术人员获取帮助。