複数のプログラミング言語のHTTPクライアントSDKを使用して、インターネット経由でApsaraMQ for RocketMQにアクセスできます。 このトピックでは、複数のプログラミング言語のHTTPクライアントSDKの使用方法について説明します。
複数のプログラミング言語のSDK
ApsaraMQ for RocketMQはRESTful HTTP通信をサポートし、7つのプログラミング言語のSDKを提供します。 TCPクライアントSDKでサポートされている機能に合わせて、HTTPクライアントSDK用にさらに機能が開発されています。 HTTPクライアントSDKとTCPクライアントSDKの機能の違いについては、次のトピックを参照してください。
注意事項
ロングポーリングモードまたはショートポーリングモードを使用して、ApsaraMQ for RocketMQブローカーでHTTP経由で使用するメッセージを取得できます。
ロングポーリング: コンシューマーはブローカーにリクエストを送信し、特定のトピックのメッセージを取得します。 トピックにメッセージが存在しない場合、ブローカーは要求を中断し、メッセージがトピックで生成されるか、または長いポーリングの指定された期間が経過するまで応答を返します。
ショートポーリング: トピックにメッセージが存在しない場合、ブローカーはすぐに応答を返します。 クライアントは、応答を受信した後、サブスクリプション要求を繰り返し開始します。
次の項目は、設定方法を説明します。
ロングポーリング: サブスクリプションリクエストを開始するときは、
waitSeconds
パラメーターを0に設定するか、パラメーターを空のままにします。ショートポーリング: サブスクリプション要求を開始するときは、
waitSeconds
パラメーターを0より大きい値に設定します。 最大値は30秒です。
詳細については、「メッセージの消費操作」をご参照ください。
短いポーリングモードを使用していて、トピックでメッセージが生成されない場合、多数の無効なリクエストが生成される可能性があります。 これらのリクエストに対しても API 呼び出し料金が課金されます。 無効なサブスクリプション要求の数を削減してコストを節約するために、ロングポーリングモードを使用し、ロングポーリングの待ち時間を引き上げることを推奨します。 API呼び出し料金の計算方法については、「API呼び出し料金」をご参照ください。
重要ApsaraMQ for RocketMQインスタンスにHTTPで接続しているコンシューマーの数が100を超えると、システムは自動的にロングポーリングモードをショートポーリングモードに変更します。 ビジネスの安定性とメッセージ消費の適時性を確保するために、インスタンスの接続数を制限することを推奨します。
HTTP SDKを使用して、ApsaraMQ for RocketMQインスタンスにアクセスできます。 これはApsaraMQ for RocketMQが提供する拡張機能です。 HTTP SDKを使用して、自己管理型Apache RocketMQクラスターにアクセスすることはできません。
アクセスするリソースが、使用するHTTPエンドポイントと同じリージョンにあることを確認します。
たとえば、ApsaraMQ For RocketMQインスタンスが中国 (杭州) リージョンにデプロイされている場合、中国 (杭州) リージョンのエンドポイントのみを使用してインスタンスにアクセスできます。 次のシナリオでインスタンスにアクセスできます。
クライアントが中国 (杭州) リージョンにある場合は、インスタンスのプライベートHTTPエンドポイントを使用してインスタンスにアクセスすることを推奨します。
クライアントが中国 (杭州) リージョンにない場合は、クライアントがインターネットに接続し、インスタンスのパブリックHTTPエンドポイントを使用してインスタンスにアクセスできることを確認してください。
メッセージは、TCPクライアントとHTTPクライアントの間で送信できます。 HTTPはXMLシリアル化を使用するため、属性、コンテンツ、タグ、キーなどのメッセージ情報はXMLルールに準拠する必要があります。
説明XMLルールの詳細については、「XML構文」をご参照ください。 サードパーティのツールxml_validatorを使用して、ビジネス要件に基づいてメッセージがXMLルールに準拠しているかどうかを確認することもできます。 xml_validatorの詳細については、「XML Validator」をご参照ください。
XMLルールに準拠していない文字がメッセージに含まれている場合、次のエラーが発生する可能性があります。
HTTP経由でメッセージを送信できません。
TCPメッセージはHTTP経由で消費されません。
Base64を使用して、XMLに準拠していないメッセージをエンコードまたはデコードできます。