AMQProxy は、AMQP 接続を再利用するオープンソースの高度なメッセージキューイングプロトコル (AMQP) プロキシサービスです。このプロキシサービスにより、PHP クライアントなど、短時間接続のみをサポートするクライアントが接続保持を使用できるようになります。これにより、ネットワークと ApsaraMQ for RabbitMQ の両方のリソース消費が削減されます。
前提条件
AMQProxy と ApsaraMQ for RabbitMQ の間で SSL 接続を使用する場合は、ご利用のクライアントサーバーに OpenSSL がインストールされていることを確認してください。詳細については、「ダウンロード」をご参照ください。
VPC 環境では、ApsaraMQ for RabbitMQ への SSL 接続はサポートされていません。
背景情報
PHP などの一部の言語のクライアントは、接続保持を使用できません。これらのクライアントは頻繁に接続を開閉します。これにより、大量のネットワークおよび ApsaraMQ for RabbitMQ リソースを消費し、ApsaraMQ for RabbitMQ に大きな負荷をかけます。

AMQProxy
AMQProxy は、Cloud AMQP が提供するオープンソースの AMQP プロキシサービスです。これにより、クライアントは ApsaraMQ for RabbitMQ との接続保持を維持できます。クライアントサーバーに AMQProxy をデプロイすると、クライアントと ApsaraMQ for RabbitMQ の間のすべてのリクエストは AMQProxy を介してルーティングされます。
AMQProxy は、クライアントからの接続リクエストを次のように処理します。
-
クライアントが接続を開くことをリクエストすると、AMQProxy はユーザー名、パスワード、および Vhost に基づいて再利用する適切な接続をチェックします。一致が見つかった場合、AMQProxy は接続を再利用します。それ以外の場合、AMQProxy はクライアントの代わりに ApsaraMQ for RabbitMQ への新しい接続を開きます。
-
クライアントが接続を閉じることをリクエストすると、AMQProxy はすぐに OK 確認応答を送信しますが、ApsaraMQ for RabbitMQ への実際の接続は閉じません。クライアントが後で新しい接続をリクエストすると、AMQProxy は既存の接続を再利用します。

AMQProxy の詳細については、「AMQProxy」をご参照ください。
AMQProxy のデプロイ
-
次のコマンドを実行して、AMQProxy パッケージをダウンロードします。
wget https://github.com/cloudamqp/amqproxy/releases/download/v0.4.4/amqproxy-0.4.4-1.linux-x86_64-static.tar.gz説明このトピックでは、AMQProxy 0.4.4 を例として使用します。他のバージョンの AMQProxy の詳細については、「リリース」をご参照ください。
-
次のコマンドを実行して、AMQProxy パッケージを解凍します。
tar -xzvf amqproxy-0.4.4-1.linux-x86_64-static.tar.gz -
次のコマンドを実行して、AMQProxy ディレクトリに移動します。
cd amqproxy/ -
次のコマンドを実行して、AMQProxy を起動します。
./amqproxy -l LISTEN_ADDRESS -p LISTEN_PORT AMQP_URLパラメーター
説明
LISTEN_ADDRESS
AMQProxy の IP アドレス。AMQProxy はクライアントサーバーにデプロイするため、ローカルアドレス 127.0.0.1 を使用できます。
LISTEN_PORT
AMQProxy のリスニングポート。クライアントリクエストは、このポートを介して AMQProxy に送信されます。5673 など、利用可能な任意のポートを使用できます。
AMQP_URL
ApsaraMQ for RabbitMQ インスタンスの URL。形式は
{amqp|amqps}://{endpoint}です。-
amqp: AMQP プロトコル。非 SSL 接続にはこのプロトコルを使用します。
-
amqps: AMQP/SSL プロトコル。SSL 接続にはこのプロトコルを使用します。
-
エンドポイント: ApsaraMQ for RabbitMQ インスタンスのエンドポイントです。ApsaraMQ for RabbitMQ コンソールの [インスタンスの詳細] ページで確認できます。詳細については、「インスタンスの詳細を表示」をご参照ください。
コマンド例は次のとおりです。
./amqproxy -l 127.0.0.1 -p 5673 amqps://188XXX420.mq-amqp.cn-hangzhou-a.aliyuncs.com応答例は次のとおりです。
Proxy upstream: 188XXX420.mq-amqp.cn-hangzhou-a.aliyuncs.com:5671 TLS Proxy listening on 127.0.0.1:5673 0 clients 0 upstreamsパラメーター
説明
clients
クライアントと AMQProxy 間の接続数。
upstreams
AMQProxy と ApsaraMQ for RabbitMQ インスタンス間の接続数。
-
-
ご利用のクライアントコードで、ホストとポートを AMQProxy の IP アドレスとリスニングポートに変更します。
factory.setHost("127.0.0.1"); factory.setPort(5673);