錯誤碼說明
本文說明云消息隊列 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 |