ApsaraMQ for RocketMQ は、さまざまなプロトコルを使用する複数の SDK バージョンを提供しています。インスタンスタイプとワークロードに合った SDK を選択してください。
新規プロジェクトには、RocketMQ 5.x gRPC SDK の使用を推奨します。この SDK は最も多くの言語をサポートし、すべての新機能が提供され、5.x シリーズのインスタンスで動作します。ブロードキャスト消費やストリーム消費など、古い SDK にしかない機能が必要な場合は、代わりに対応する SDK を使用してください。
SDK バージョン
次の表は、各 SDK バージョンのプロトコル、インスタンスの互換性、および推奨事項を比較したものです。
| プロトコル | gRPC プロトコル v2 | Remoting プロトコル | Remoting プロトコル | Remoting プロトコル | gRPC プロトコル v1 | HTTP プロトコル |
| アクセス可能なインスタンス | 5.x シリーズのインスタンス | 5.x シリーズのインスタンス、4.x シリーズのインスタンス | 5.x シリーズのインスタンス、4.x シリーズのインスタンス | 5.x シリーズのインスタンス、4.x シリーズのインスタンス | 4.x シリーズのインスタンス | 4.x シリーズのインスタンス |
| 推奨事項 | 推奨します。複数の言語をサポートします。すべての新機能と最適化は、この SDK を対象としています。5.x gRPC SDK の一部の機能が要件を満たさない場合は、5.x Remoting SDK を使用できます。 | 既存のアプリケーションはこれらの SDK バージョンを引き続き使用できます。5.x シリーズのインスタンスには互換性があります。 | 既存のアプリケーションはこれらの SDK バージョンを引き続き使用できます。5.x シリーズのインスタンスには互換性があります。 | 既存のアプリケーションはこれらの SDK バージョンを引き続き使用できます。5.x シリーズのインスタンスには互換性があります。 | これらのバージョンのクライアントは使用しないでください。新機能や最適化は提供されません。4.x シリーズのインスタンスにのみアクセスできます。 | これらのバージョンのクライアントは使用しないでください。新機能や最適化は提供されません。4.x シリーズのインスタンスにのみアクセスできます。 |
SDK バージョン間の機能比較
次の表では、チェックマーク (✅) はサポートを、X は非サポートを示します。
機能 |
5.x gRPC |
5.x Remoting |
4.x/3.x |
ONS TCP 1.x |
ONS TCP 2.x |
ONS HTTP |
| 通常、順序、トランザクション、スケジュールメッセージの送信 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 軽量なトピックベースのモデル | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 並行消費 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| メッセージの順序消費 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 順序メッセージの並行消費の最適化 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ブロードキャスト消費 | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| ストリーム消費 (Flink などへの接続) | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| メッセージトレース | ✅ | ✅ | バージョン 4.5.2 以降でサポート | ✅ | ✅ | ❌ |
| プロデューサーとコンシューマーのクライアントメトリクスデータ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| グレースフルシャットダウン | ✅ | 5.x シリーズのインスタンスでのみサポート | ❌ | ❌ | ❌ | ❌ |
| バッチ送信 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| 優先度メッセージ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
優先度メッセージを使用すると、メッセージに優先度レベルを割り当てることができ、優先度の高いメッセージが低いメッセージよりも先に消費されます。この機能は RocketMQ 5.x gRPC SDK 専用です。
制限
-
同じコンシューマーグループ内の異なるコンシューマーは、同じプロトコルをサポートするクライアントを使用する必要があります。
-
同じコンシューマーグループに対して、Remoting プロトコル SDK から gRPC プロトコル SDK へのグレースケールアップグレードを実行する場合:
-
メッセージを順序通りに配信するコンシューマーグループは、このアップグレードをサポートしていません。
-
メッセージを並行して配信するコンシューマーグループは、スムーズなアップグレードをサポートしています。アップグレード中に少数のメッセージが重複する可能性があります。
-
-
同じ順序トピックにメッセージを送信するには、すべてのプロデューサークライアントが同じプロトコルを使用する必要があります。プロトコルは Remoting プロトコルまたは gRPC プロトコルのいずれかである必要があります。
-
メッセージを順序通りに配信するコンシューマーグループの場合、次の順序で操作が行われると、コンシューマーオフセットがロールバックすることがあります:
-
コンシューマーグループが最初に Remoting プロトコル SDK を使用します。
-
SDK が gRPC プロトコル SDK にアップグレードされます。
-
SDK が Remoting プロトコル SDK にロールバックされます。
-
-
RocketMQ ONS TCP 2.x SDK は一部のリージョンでのみ利用可能です。詳細については、「制限」をご参照ください。
RocketMQ 5.x gRPC SDK
5.x gRPC SDK は、Java、C#、Go、Python、C++ をサポートしています。すべての言語で gRPC プロトコル v2 を使用します。
言語 |
リファレンス |
| Java SDK | バージョンガイド | 環境の準備 | サンプルコード |
| C# SDK | バージョンガイド | 環境の準備 | サンプルコード |
| Go SDK | バージョンガイド | 環境の準備 | サンプルコード |
| Python SDK | バージョンガイド | 環境の準備 | サンプルコード |
| C++ SDK | バージョンガイド | 環境の準備 | サンプルコード |
RocketMQ 5.x Remoting SDK
5.x Remoting SDK は Java のみで利用可能で、Remoting プロトコルを使用します。
言語 |
リファレンス |
| Java SDK | バージョンガイド | 環境の準備 | サンプルコード |
RocketMQ 4.x/3.x SDK
4.x/3.x SDK は Java と C++ で利用可能で、Remoting プロトコルを使用します。
言語 |
リファレンス |
| Java SDK | バージョンガイド | 環境の準備 | サンプルコード |
| C++ SDK | バージョンガイド | 環境の準備 | サンプルコード |
RocketMQ ONS TCP 1.x SDK
ONS TCP 1.x SDK は Java、C++、.NET で利用可能で、Remoting プロトコルを使用します。
言語 |
リファレンス |
| Java SDK | バージョンガイド | 環境の準備 | サンプルコード |
| C++ SDK | バージョンガイド | 環境の準備 | サンプルコード |
| .NET SDK | バージョンガイド | 環境の準備 | サンプルコード |