ApsaraMQ for RocketMQ は、複数のプログラミング言語に対応した HTTP SDK をサポートしており、インターネットからのアクセスが可能です。このトピックでは、複数プログラミング言語に対応した HTTP SDK のリリースノートについて説明します。
複数プログラミング言語のサポート
ApsaraMQ for RocketMQ は RESTful HTTP プロトコルをサポートし、7 つのプログラミング言語に対応した SDK を提供しています。HTTP SDK は、TCP SDK で提供される機能に合わせて継続的に開発されています。HTTP と TCP の SDK 機能の違いについては、以下のトピックをご参照ください。
使用上の注意
HTTP 経由で、コンシューマーはロングポーリングモードまたはショートポーリングモードを使用して、ApsaraMQ for RocketMQ ブローカーから取得したメッセージをコンシュームできます。
ロングポーリング: コンシューマーは、特定の Topic のメッセージを取得するためにブローカーにリクエストを送信します。Topic にメッセージが存在しない場合、ブローカーはリクエストを一時停止し、Topic にメッセージが生成されるか、ロングポーリングに指定された期間が経過するまで応答を返しません。
ショートポーリング: Topic にメッセージが存在しない場合、ブローカーはすぐに応答を返します。クライアントは応答を受信した後、繰り返しサブスクリプションリクエストを開始します。
構成方法は以下のとおりです。
ロングポーリング: サブスクリプションリクエストを開始するときに、
waitSecondsパラメーターを 0 より大きい値に設定します。最大値は 30 秒です。ショートポーリング: サブスクリプションリクエストを開始するときに、
waitSecondsパラメーターを 0 に設定するか、パラメーターを指定しません。
詳細については、「メッセージをコンシュームする操作」をご参照ください。
ショートポーリングモードを使用していて、Topic にメッセージが生成されない場合、大量の無効なリクエストが生成される可能性があります。これらのリクエストに対しては API 呼び出し料金が発生します。無効なサブスクリプションリクエストの数を減らし、コストを節約するには、ロングポーリングモードを使用し、ロングポーリングの待機時間を長くすることをお勧めします。API 呼び出し料金の計算方法については、「API 呼び出し料金」をご参照ください。
重要サービスの安定性とコンシュームの適時性を確保するために、HTTP 経由で ApsaraMQ for RocketMQ インスタンスに接続されているコンシューマーの数が 100 を超えると、システムは自動的にロングポーリングモードをショートポーリングモードに変更します。システムがショートポーリングモードに変更された後に無効なリクエストが多すぎることによるコストの増加を防ぐために、コンシューマー接続の数を制限してください。
HTTP SDK からのアクセスのサポートは、ApsaraMQ for RocketMQ の拡張機能です。セルフマネージド Apache RocketMQ クラスターはこの機能を提供しておらず、HTTP SDK を使用してアクセスすることはできません。
アクセスするリソースが、使用する HTTP エンドポイントと同じリージョンにあることを確認してください。
たとえば、ApsaraMQ for RocketMQ インスタンスが中国 (杭州) リージョンにある場合、インスタンスにアクセスするには中国 (杭州) リージョンのエンドポイントのみを使用できます。以下の点にご注意ください。
クライアントが中国 (杭州) リージョンにある場合は、最適なユーザーエクスペリエンスを得るために、インスタンスの HTTP 内部エンドポイントを使用してリソースにアクセスします。
クライアントが中国 (杭州) リージョン以外のリージョンにある場合は、クライアントがインターネットに接続できることを確認し、インスタンスの HTTP パブリックエンドポイントを使用してリソースにアクセスします。
メッセージは TCP クライアントと HTTP クライアント間で送信できます。HTTP では XML シリアライゼーションが使用されるため、メッセージの属性、本文、タグ、およびキーは XML ルールに準拠している必要があります。
説明XML ルールの詳細については、「XML 構文」をご参照ください。また、サードパーティツール XML Validator を使用して、XML 構文がルールに準拠しているかどうかを確認することもできます。
XML ルールに準拠していない文字が含まれている場合、以下の問題が発生する可能性があります。
メッセージが HTTP 経由で送信された場合、送信に失敗します。
メッセージが TCP 経由で送信され、HTTP 経由でコンシュームされた場合、コンシュームに失敗します。
XML ルールに準拠していないメッセージを送受信するには、Base64 を使用して送信するメッセージをエンコードまたはデコードできます。