このトピックでは、ApsaraMQ for RabbitMQ クライアントが Advanced Message Queuing Protocol(AMQP)0-9-1 を呼び出したときに返されるエラーコードについて説明します。このトピックで提供されているエラーメッセージと解決策に基づいて、エラーをトラブルシューティングできます。
エラーコード
戻りコード | 返されるエラーメッセージ | 説明 | 解決策 |
200 | no route has mandatory |
| exchange のバインディングが正しく指定されているかどうかを確認します。 |
311 | MessageBodyLengthExceeded | メッセージのサイズが上限を超えているため、このエラーメッセージが返されます。 | ApsaraMQ for RabbitMQ で指定されている上限を超えないように、メッセージのサイズを確認してください。詳細については、「制限」をご参照ください。 |
320 | ProtocolVersionMismatch | AMQP バージョンが無効なため、このエラーメッセージが返されます。 ApsaraMQ for RabbitMQ は AMQP 0-9-1 のみをサポートしています。 | AMQP バージョンが 0-9-1 であることを確認します。 |
403 | AccessDeniedByRamPolicy | 指定された Resource Access Management(RAM)ユーザーに操作を実行する権限が付与されていないため、このエラーメッセージが返されます。 | 必要な権限が RAM ユーザーに付与されていることを確認します。詳細については、「RAM ポリシー」をご参照ください。 |
404 | ExchangeNotExist | exchange が存在しないため、このエラーメッセージが返されます。 |
|
QueueNotExist | キューが存在しないため、このエラーメッセージが返されます。 |
| |
405 | QueueExclusive | キューが排他キューであるため、このエラーメッセージが返されます。 | キューにアクセスした最初の接続であることを確認します。キューは、キューにアクセスした接続からのみ表示されます。他の接続からキューにアクセスすることはできません。 |
406 | QueueConsumerNameInvalid | キューのコンシューマーの名前が命名規則に一致しないため、このエラーメッセージが返されます。 | 指定されたコンシューマー名が有効であることを確認します。詳細については、「文字列」をご参照ください。 |
ExchangeNameEmpty | exchange 名が空であるため、このエラーメッセージが返されます。 | exchange が作成されており、指定された exchange 名が有効であることを確認します。詳細については、「文字列」をご参照ください。 | |
QueueHasDiffField | ローカル宣言のキューの属性値が、使用したいキューの属性値と異なるため、このエラーメッセージが返されます。 | ローカル宣言のキューの属性値を変更して、使用したいキューの属性値と同じになるようにします。詳細については、「ApsaraMQ for RabbitMQ クライアントで報告された QueueHasDiffField エラーのトラブルシューティング方法」をご参照ください。 | |
BindingNameInvalid | ルーティングキーが無効なため、このエラーメッセージが返されます。 | 指定されたルーティングキーが有効であることを確認します。詳細については、「文字列」をご参照ください。 | |
ExchangeInBuilt | exchange が組み込み exchange であり、作成できないため、このエラーメッセージが返されます。 | exchange 名を変更します。 amp. というプレフィックスが付いた exchange は組み込み exchange です。組み込み exchange を作成することはできません。 | |
QueueNameInvalid | キュー名が命名規則に一致しないため、このエラーメッセージが返されます。 | 指定されたキュー名が有効であることを確認します。詳細については、「文字列」をご参照ください。 | |
MessageBodyEmpty | メッセージ本文が空であるため、このエラーメッセージが返されます。 | メッセージ本文を入力します。 | |
503 | ExchangeTypeNotSupport[x-delayed-message] | コードを使用して x-delayed-message exchange を作成するときにパラメーターが正しく構成されていないため、このエラーメッセージが返されます。 | exchange タイプと x-delay-type パラメーターの値が正しく指定されているかどうかを確認します。正しい例:
|
504 | ChannelNotFind | 情報がブローカーに送信されるときにチャネルがクリアされるため、このエラーメッセージが返されます。 | 複数のプロセスが 1 つの接続を共有し、接続が頻繁に確立およびクローズされる場合、このエラーコードが返されます。 Spring Boot を使用して ApsaraMQ for RabbitMQ と統合し、接続ファクトリーを CONNECTION モードに設定する場合、 |
530 | ExchangeHasDiffFields | ローカル宣言の exchange の属性値が、使用したい exchange の属性値と異なるため、このエラーメッセージが返されます。 | ローカル宣言の exchange の属性値を変更して、使用したい exchange の属性値と同じになるようにします。詳細については、「ApsaraMQ for RabbitMQ クライアントで報告された ExchangeHasDiffFields エラーのトラブルシューティング方法」をご参照ください。 |
denied for too many requests | リクエストがスロットルされているため、このエラーメッセージが返されます。これは、1 秒あたりのメッセージングトランザクション(TPS)が仕様制限を超えているために発生します。 |
| |
VhostNumExceeded | 単一インスタンスの vhost の数が上限を超えているため、このエラーメッセージが返されます。 |
| |
ExchangeNumExceeded | 単一 vhost の exchange の数が上限を超えているため、このエラーメッセージが返されます。 |
| |
QueueNumExceeded | 単一インスタンスのキューの数が上限を超えているため、このエラーメッセージが返されます。 |
| |
VHostTotalBindingNumExceeded | 単一 vhost のバインディングの数が上限を超えているため、このエラーメッセージが返されます。 |
| |
ExchangeBindingNumExceeded | 単一 exchange がバインドされているキューの数が上限を超えているため、このエラーメッセージが返されます。 | 不要になったキューから exchange のバインドを解除します。 | |
QueueConsumerNumExceeded | 単一キューのコンシューマーの数が上限を超えているため、このエラーメッセージが返されます。 |
| |
ChannelNumExceeded | 単一接続のチャネルの数が上限を超えているため、このエラーメッセージが返されます。 | 不要になったプロデューサーまたはコンシューマープロセスをシャットダウンします。 | |
QueueConsumerAlreadyExist | 単一キューに同じコンシューマーが存在するため、このエラーメッセージが返されます。 | 同じチャネルで BasicConsume メソッドを呼び出すときに、ConsumerTag パラメーターに異なる値を指定します。 | |
AccessAccountDataError | ユーザー名とパスワードの認証に失敗したため、このエラーメッセージが返されます。 |
| |
ConnectionNumExceeded | 単一インスタンスの接続の数が上限を超えているため、このエラーメッセージが返されます。 |
| |
541 | InternalError | ブローカーで内部エラーが発生したため、このエラーメッセージが返されます。 | 返されたエラーコードに基づいて問題の原因を特定し、チケットを提出して ApsaraMQ for 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 | エラーのトラブルシューティングに役立つ情報。次の情報が含まれます。
説明 ApsaraMQ for RabbitMQ クライアントが BasicPublish メソッドを呼び出すときにエラーが発生した場合、ErrorHelp パラメーターはメッセージ ID のみを提供し、キーと値のペア形式のヘルプ情報は提供しません。メッセージ ID に基づいてエラーをトラブルシューティングできます。これにより、パフォーマンスが向上し、メモリのオーバーヘッドが削減されます。 | [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 |