本文说明云消息队列 RabbitMQ 版客户端调用AMQP 0-9-1协议时的返回码,您可以根据返回信息与解决方案自助排查错误。
返回码列表
返回码(reply-code) | 返回信息(reply-text) | 描述 | 解决方案 |
200 | no route has mandatory | 调用 | 请检查Exchange下的Binding是否设置正确。 |
311 | MessageBodyLengthExceeded | 消息大小超过限制。 | 确保您发送的消息的大小在不超过云消息队列 RabbitMQ 版的限制值。更多信息,请参见使用限制。 |
320 | ProtocolVersionMismatch | 协议版本不正确,当前只支持AMQP 0-9-1协议。 | 确保您使用的协议版本为AMQP 0-9-1。 |
403 | AccessDeniedByRamPolicy | 权限错误。 | 确保您的RAM用户已被授予相应权限。更多信息,请参见RAM权限策略。 |
404 | ExchangeNotExist | Exchange不存在。 |
|
QueueNotExist | Queue不存在。 |
| |
405 | QueueExclusive | 当前队列是排他队列。 | 该队列仅对首次连接的Connection可见,不支持通过其他Connection访问。 |
406 | QueueConsumerNameInvalid | 队列消费者名称不符合规范。 | 确保您输入的消费者名称拼写正确且符合规范。具体规范,请参见字符限制。 |
ExchangeNameEmpty | Exchange名称为空。 | 请输入Exchange名称,并确保您输入的Exchange已创建。具体规范,请参见字符限制。 | |
QueueHasDiffField | 本地声明中Queue的属性与要调用的目标Queue属性不同。 | 修改本地声明中Queue的参数值,使其与要调用的目标Queue属性保持一致。具体操作,请参见QueueHasDiffField。 | |
BindingNameInvalid | Routing Key名称不符合规范。 | 确保您输入的Routing Key拼写正确且符合规范。具体规范,请参见字符限制。 | |
ExchangeInBuilt | 内置Exchange,不允许创建。 | 请您修改Exchange名称。以amp.开头的Exchange为系统内置Exchange,不允许您创建。 | |
QueueNameInvalid | Queue名称不符合规范。 | 确保您输入的Queue名称拼写正确且符合规范。具体规范,请参见字符限制。 | |
MessageBodyEmpty | 消息体内容为空。 | 请输入消息内容。 | |
503 | ExchangeTypeNotSupport[x-delayed-message] | 使用代码方式创建x-delayed-message类型的Exchange时,参数设置错误。 | 重点检查Exchange类型和x-delay-type参数值设置是否正确。正确示例如下:
|
504 | ChannelNotFind | 传输信息到服务端时,Channel已经被清理。 | 多个进程共享Connection且频繁建立和关闭连接会返回该错误码。 如果您使用的SpringBoot集成方式且连接工厂为CONNECTION模式,您可以适当调整 |
530 | ExchangeHasDiffFields | 本地声明中Exchange的属性与要调用的目标Exchange属性不同。 | 修改本地声明中Exchange的参数值,使其与要调用的目标Exchange属性保持一致。具体操作,请参见ExchangeHasDiffFields。 |
denied for too many requests | 消息收发TPS峰值超过规格限制,请求被限流。 | ||
VhostNumExceeded | 单实例的Vhost数量超过限制。 |
| |
ExchangeNumExceeded | 单Vhost的Exchange数量超过限制。 |
| |
QueueNumExceeded | 单实例的Queue数量超过限制。 | ||
VHostTotalBindingNumExceeded | 单Vhost的Binding数量超过限制。 | ||
ExchangeBindingNumExceeded | 单Exchange绑定的Queue数量超过限制。 | 解除不再使用的Queue的绑定关系。 | |
QueueConsumerNumExceeded | 单Queue的Consumer数量超过限制。 | ||
ChannelNumExceeded | 单Connection的Channel数量超过限制。 | 关闭不再使用的Producer或Consumer进程。 | |
QueueConsumerAlreadyExist | 单Queue上已经存在相同消费者。 | 相同的Channel上进行BasicConsume时指定不同的ConsumerTag值。 | |
AccessAccountDataError | 用户名密码验证错误。 |
| |
ConnectionNumExceeded | 单实例创建的连接(Connection)数量超过限制。 |
| |
541 | InternalError | 服务端内部错误。 | 根据返回信息的错误原因定位问题后,提交工单联系云消息队列 RabbitMQ 版技术人员获取帮助。 |
返回信息示例
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,routingKey=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。 | 5FB4C999314635F952FCBFF6 |
ErrorHelp | 错误辅助排查信息。包括:
说明 为提高性能并减少内存开销,BasicPublish接口发生错误时,ErrorHelp只提供msgId,而不提供kv结构的错误辅助排查信息,您可以根据msgId来排查。 | [dstQueue=XXX_test_queue,srcExchange=Producer.ExchangeName,routingKey=XXX_test_bk,http://mrw.so/6rNqO8] |
class-id | 类ID(与开源RabbitMQ相同)。 | 50 |
method-id | 方法ID(与开源RabbitMQ相同)。 | 20 |