すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RabbitMQ:エラーコード

最終更新日:Mar 14, 2025

このトピックでは、ApsaraMQ for RabbitMQ クライアントが Advanced Message Queuing Protocol(AMQP)0-9-1 を呼び出したときに返されるエラーコードについて説明します。このトピックで提供されているエラーメッセージと解決策に基づいて、エラーをトラブルシューティングできます。

エラーコード

戻りコード

返されるエラーメッセージ

説明

解決策

200

no route has mandatory

basicPublish メソッドを呼び出してメッセージを送信し、mandatory パラメーターを true に設定した場合、exchange が exchange タイプとルーティングキーに基づいてメッセージを格納するキューを一致させることができないと、ブローカーは basic.return メソッドを呼び出してメッセージをプロデューサーに返します。そのため、このエラーメッセージが返されます。

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 が存在しないため、このエラーメッセージが返されます。

  • 指定された exchange が作成されていることを確認します。

  • 指定された 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 パラメーターの値が正しく指定されているかどうかを確認します。正しい例:

  • arguments.put("x-delayed-type", "有効な値: direct、topic、fanout、および headers");

  • channel.exchangeDeclare("${exchangeName}", "有効な値: x-delayed-message", true, false, and arguments);

504

ChannelNotFind

情報がブローカーに送信されるときにチャネルがクリアされるため、このエラーメッセージが返されます。

複数のプロセスが 1 つの接続を共有し、接続が頻繁に確立およびクローズされる場合、このエラーコードが返されます。

Spring Boot を使用して ApsaraMQ for RabbitMQ と統合し、接続ファクトリーを CONNECTION モードに設定する場合、spring.rabbitmq.cache.connection.size パラメーターを構成することで、キャッシュされた接続の数を変更できます。これにより、クライアントはブローカーへの接続を頻繁に確立またはクローズしません。

530

ExchangeHasDiffFields

ローカル宣言の exchange の属性値が、使用したい exchange の属性値と異なるため、このエラーメッセージが返されます。

ローカル宣言の exchange の属性値を変更して、使用したい exchange の属性値と同じになるようにします。詳細については、「ApsaraMQ for RabbitMQ クライアントで報告された ExchangeHasDiffFields エラーのトラブルシューティング方法」をご参照ください。

denied for too many requests

リクエストがスロットルされているため、このエラーメッセージが返されます。これは、1 秒あたりのメッセージングトランザクション(TPS)が仕様制限を超えているために発生します。

  • トラフィックを制御して、メッセージング TPS が仕様制限を超えないようにします。詳細については、「インスタンススロットリングのベストプラクティス」をご参照ください。

  • インスタンスをアップグレードして、メッセージング TPS の最大値を増やします。詳細については、「制限」をご参照ください。

VhostNumExceeded

単一インスタンスの vhost の数が上限を超えているため、このエラーメッセージが返されます。

  • 不要になった vhost を削除します。

  • インスタンスをアップグレードして、vhost の最大数を増やします。詳細については、「制限」をご参照ください。

ExchangeNumExceeded

単一 vhost の exchange の数が上限を超えているため、このエラーメッセージが返されます。

  • 不要になった vhost を削除します。

  • インスタンスをアップグレードして、exchange の最大数を増やします。詳細については、「制限」をご参照ください。

QueueNumExceeded

単一インスタンスのキューの数が上限を超えているため、このエラーメッセージが返されます。

VHostTotalBindingNumExceeded

単一 vhost のバインディングの数が上限を超えているため、このエラーメッセージが返されます。

ExchangeBindingNumExceeded

単一 exchange がバインドされているキューの数が上限を超えているため、このエラーメッセージが返されます。

不要になったキューから exchange のバインドを解除します。

QueueConsumerNumExceeded

単一キューのコンシューマーの数が上限を超えているため、このエラーメッセージが返されます。

ChannelNumExceeded

単一接続のチャネルの数が上限を超えているため、このエラーメッセージが返されます。

不要になったプロデューサーまたはコンシューマープロセスをシャットダウンします。

QueueConsumerAlreadyExist

単一キューに同じコンシューマーが存在するため、このエラーメッセージが返されます。

同じチャネルで BasicConsume メソッドを呼び出すときに、ConsumerTag パラメーターに異なる値を指定します。

AccessAccountDataError

ユーザー名とパスワードの認証に失敗したため、このエラーメッセージが返されます。

  • 静的ユーザー名とパスワードが正しく指定されているかどうかを確認します。

  • 指定された静的ユーザー名とパスワードがインスタンスのユーザー名とパスワードであるかどうかを確認します。

  • 静的ユーザー名と静的パスワードの作成に使用された AccessKey ペアが正しいかどうかを確認します。

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

エラーのトラブルシューティングに役立つ情報。次の情報が含まれます。

  • エラー発生時の関連メタデータ。

  • AMQP メソッドの呼び出し時に返されるエラーコードのリンク。

説明

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