本文說明雲訊息佇列 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 |