ApsaraMQ for RocketMQ menyediakan beberapa versi SDK yang menggunakan protokol berbeda. Pilih SDK yang sesuai dengan tipe instans dan beban kerja Anda.
Untuk proyek baru, gunakan RocketMQ 5.x gRPC SDK. SDK ini mendukung paling banyak bahasa, menerima semua fitur baru, dan kompatibel dengan instans seri 5.x. Jika Anda memerlukan fitur eksklusif dari SDK lama, seperti broadcast consumption atau stream consumption, gunakan SDK yang sesuai sebagai gantinya.
Versi SDK
Tabel berikut membandingkan protokol, kompatibilitas instans, dan rekomendasi untuk setiap versi SDK.
| Protocol | gRPC protocol v2 | Remoting protocol | Remoting protocol | Remoting protocol | gRPC protocol v1 | HTTP protocol |
| Accessible instances | 5.x series instances | 5.x series instances, 4.x series instances | 5.x series instances, 4.x series instances | 5.x series instances, 4.x series instances | 4.x series instances | 4.x series instances |
| Recommendation | Recommended. Mendukung multiple languages. Semua fitur dan optimasi baru ditujukan untuk SDK ini. Jika beberapa fitur pada 5.x gRPC SDK tidak memenuhi kebutuhan Anda, Anda dapat menggunakan 5.x Remoting SDK. | Aplikasi yang sudah ada dapat terus menggunakan versi SDK ini. Kompatibel dengan 5.x series instances. | Aplikasi yang sudah ada dapat terus menggunakan versi SDK ini. Kompatibel dengan 5.x series instances. | Aplikasi yang sudah ada dapat terus menggunakan versi SDK ini. Kompatibel dengan 5.x series instances. | Jangan gunakan client versi ini. Tidak ada fitur atau optimasi baru. Hanya dapat mengakses 4.x series instances. | Jangan gunakan client versi ini. Tidak ada fitur atau optimasi baru. Hanya dapat mengakses 4.x series instances. |
Perbandingan fitur antar versi SDK
Pada tabel berikut, tanda centang menunjukkan dukungan dan tanda X menunjukkan tidak didukung.
Feature |
5.x gRPC |
5.x Remoting |
4.x/3.x |
ONS TCP 1.x |
ONS TCP 2.x |
ONS HTTP |
| Kirim pesan normal, terurut, transaksi, dan terjadwal | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Lightweight topic-based model | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Concurrent consumption | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ordered consumption of messages | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Concurrency optimization for ordered consumption of messages | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Broadcasting consumption | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Stream consumption (menghubungkan ke Flink, dll.) | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Message trace | ✅ | ✅ | Didukung pada versi 4.5.2 dan yang lebih baru | ✅ | ✅ | ❌ |
| Producer dan consumer client metrics data | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Graceful shutdown | ✅ | Hanya didukung untuk 5.x series instances | ❌ | ❌ | ❌ | ❌ |
| Batch sending | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Priority message | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Priority message memungkinkan Anda menetapkan tingkat prioritas pada pesan sehingga pesan dengan prioritas lebih tinggi dikonsumsi sebelum pesan dengan prioritas lebih rendah. Fitur ini eksklusif untuk RocketMQ 5.x gRPC SDK.
Batasan
-
Konsumen dalam kelompok konsumen yang sama harus menggunakan klien yang mendukung protokol yang sama.
-
Saat melakukan upgrade grayscale dari SDK berbasis protokol Remoting ke SDK berbasis protokol gRPC untuk kelompok konsumen yang sama:
-
Kelompok konsumen yang mengirimkan pesan secara terurut tidak mendukung upgrade ini.
-
Kelompok konsumen yang mengirimkan pesan secara konkuren mendukung upgrade yang mulus. Sejumlah kecil pesan mungkin diduplikasi selama proses upgrade.
-
-
Untuk mengirim pesan ke topik terurut yang sama, semua klien produsen harus menggunakan protokol yang sama, yaitu protokol Remoting atau protokol gRPC.
-
Untuk kelompok konsumen yang mengirimkan pesan secara terurut, offset konsumen mungkin mengalami rollback jika urutan berikut terjadi:
-
Kelompok konsumen awalnya menggunakan SDK berbasis protokol Remoting.
-
SDK di-upgrade ke SDK berbasis protokol gRPC.
-
SDK dikembalikan (rollback) ke SDK berbasis protokol Remoting.
-
-
RocketMQ ONS TCP 2.x SDK hanya tersedia di beberapa wilayah. Untuk informasi selengkapnya, lihat Batasan.
RocketMQ 5.x gRPC SDK
5.x gRPC SDK mendukung Java, C#, Go, Python, dan C++. Semua bahasa menggunakan gRPC protocol v2.
Language |
References |
| Java SDK | Version Guide | Prepare the environment | Sample code |
| C# SDK | Version Guide | Prepare the environment | Sample code |
| Go SDK | Version Guide | Prepare the environment | Sample code |
| Python SDK | Version Guide | Prepare the environment | Sample code |
| C++ SDK | Version Guide | Prepare the environment | Sample code |
RocketMQ 5.x Remoting SDK
5.x Remoting SDK hanya tersedia untuk Java dan menggunakan protokol Remoting.
Language |
References |
| Java SDK | Version Guide | Prepare the environment | Sample code |
RocketMQ 4.x/3.x SDK
4.x/3.x SDK tersedia untuk Java dan C++ serta menggunakan protokol Remoting.
Language |
References |
| Java SDK | Version Guide | Prepare the environment | Sample code |
| C++ SDK | Version Guide | Prepare the environment | Sample code |
RocketMQ ONS TCP 1.x SDK
ONS TCP 1.x SDK tersedia untuk Java, C++, dan .NET serta menggunakan protokol Remoting.
Language |
References |
| Java SDK | Version Guide | Prepare the environment | Sample code |
| C++ SDK | Version Guide | Prepare the environment | Sample code |
| .NET SDK | Version Guide | Prepare the environment | Sample code |