ApsaraMQ for RocketMQ は、TCP および HTTP プロトコル用の多言語ソフトウェア開発キット (SDK) を提供します。このトピックでは、SDK 間の違いを説明し、それらの使用方法について解説します。
SDK のバージョン
ApsaraMQ for RocketMQ SDK の異なるバージョンでサポートされている機能について、次の表で説明します。
次の表では、✅ は機能がサポートされていることを示し、❌ は機能がサポートされていないことを示します。
項目 | ||||||
プロトコル | gRPC プロトコル v2 | Remoting プロトコル | Remoting プロトコル | Remoting プロトコル | gRPC プロトコル v1 | HTTP プロトコル |
アクセス可能なインスタンス | 5.x シリーズインスタンス |
|
|
| 4.x シリーズインスタンス | 4.x シリーズインスタンス |
推奨事項 | 5.x gRPC SDK を使用します。
|
|
| |||
通常、順序、トランザクション、およびスケジュールメッセージの送信 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
並行消費 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
順序付き消費 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | |
ブロードキャストコンシューム | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
ストリームコンシューム (Flink などのサービスへの接続) | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
メッセージトレース | ✅ | ✅ | バージョン 4.5.2 以降でサポート | ✅ | ✅ | ❌ |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | |
✅ | 5.x シリーズインスタンスでのみサポート | ❌ | ❌ | ❌ | ❌ | |
SDK の制限
同じ使用者グループ内の異なるコンシューマーは、同じプロトコルのクライアントを使用する必要があります。
同じ使用者グループに対して Remoting プロトコル SDK から gRPC プロトコル SDK へのカナリアアップグレードを実行する場合は、次の点に注意してください:
順序どおりにメッセージを配信する使用者グループのアップグレードはサポートされていません。
メッセージを同時に配信する使用者グループのスムーズなアップグレードはサポートされています。ただし、アップグレード中に少数のメッセージが重複する可能性があります。
同じ順序 Topic にメッセージを送信する場合、すべてのプロデューサークライアントは同じプロトコル (Remoting プロトコルまたは gRPC プロトコル) を使用する必要があります。
順序どおりにメッセージを配信する使用者グループの場合、次の手順を実行すると、コンシューマオフセットのロールバックが発生する可能性があります:
順序使用者グループは、最初に Remoting プロトコル SDK で実行されます。
SDK を gRPC プロトコル SDK にアップグレードします。
SDK を Remoting プロトコル SDK に復元します。
RocketMQ ONS TCP 2.x SDK は、一部のリージョンでのみサポートされています。詳細については、「制限」をご参照ください。
TCP プロトコル
オープンソースの RocketMQ をクラウドに移行し、コードを変更したくない場合にのみ、Community Edition SDK を使用してください。他のすべてのシナリオでは、ApsaraMQ for RocketMQ が提供する Enterprise Edition SDK を使用してください。Community Edition SDK と比較して、Enterprise Edition SDK はより多くの機能を提供し、より高い安定性を保証します。
Enterprise Edition TCP プロトコル SDK (ONS 1.x/2.x SDK)
HTTP プロトコル
Enterprise Edition HTTP プロトコル SDK (多言語サポートに推奨)
TCP と HTTP プロトコル SDK の比較
TCP および HTTP プロトコル SDK は、異なる機能をサポートしています。どちらのプロトコルタイプが要件に最も適しているかを評価してください。
SDK プロトコルタイプ | TCP プロトコル SDK | HTTP プロトコル SDK |
推奨 | 推奨される選択肢
| 代替の選択肢
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
SDK の使用上の注意
各タイプのエンドポイントは、同じプロトコルタイプのクライアントでのみ使用できます。たとえば、TCP クライアント SDK を使用してメッセージを送受信する場合、ApsaraMQ for RocketMQ インスタンスの TCP エンドポイントを使用して ApsaraMQ for RocketMQ ブローカーにアクセスする必要があります。
ApsaraMQ for RocketMQ は、HTTP および TCP プロトコルのグループ ID をサポートしています。異なるプロトコルのグループ ID は交換して使用することはできません。たとえば、TCP プロトコル SDK を使用してメッセージを送受信する場合、TCP プロトコルのグループ ID を作成する必要があります。
TCP プロトコルを使用するクライアントと HTTP プロトコルを使用するクライアントは、相互にメッセージを送受信できます。ただし、HTTP プロトコルは XML を使用してメッセージをシリアル化します。したがって、メッセージのプロパティ、内容、タグ、およびキーは XML 仕様に準拠する必要があります。そうしないと、メッセージの送信またはコンシュームに失敗する可能性があります。
XML 仕様に準拠しないメッセージは、Base64 を使用してエンコードおよびデコードできます。
説明XML 仕様の詳細については、「XML 構文」をご参照ください。また、xml_validator などのサードパーティツールを使用して、XML 構文が有効かどうかを確認することもできます。
TCP および HTTP クライアント用のパブリックエンドポイントとプライベートエンドポイントは、すべてのリージョンで提供されています。本番環境では、仮想プライベートクラウド (VPC) 内で ApsaraMQ for RocketMQ にアクセスすることをお勧めします。Cloud Enterprise Network (CEN) が利用できない場合に、リージョンを越えて、オンプレミスのデータセンターから、またはインターネット経由で ApsaraMQ for RocketMQ にアクセスしたい場合は、パブリックエンドポイントを使用して ApsaraMQ for RocketMQ インスタンスにアクセスできます。パブリックエンドポイントを使用して ApsaraMQ for RocketMQ インスタンスにアクセスする場合、アウトバウンドインターネットトラフィックに対して課金されます。詳細については、「インターネットトラフィックの課金」をご参照ください。