Topik ini menjelaskan definisi, hubungan model, properti internal, batasan perilaku, kompatibilitas versi, dan rekomendasi penggunaan lite topic (LiteTopics) di ApsaraMQ for RocketMQ.
Prasyarat
LiteTopics saat ini hanya didukung oleh instans non-Serverless (subscription dan pay-as-you-go) serta instans Serverless dedicated.
Untuk membeli versi instans yang mendukung model LiteTopic:
Untuk instans baru, tambahkan tag kemampuan produk di halaman pembelian. Atur kunci tag menjadi version_capability dan nilai tag menjadi lite-topic. Gambar berikut menunjukkan contohnya.

Untuk instans yang sudah ada, Anda dapat mengajukan tiket untuk meningkatkan ke versi yang mendukung model LiteTopic. Sertakan ID instans dan wilayah tempat instans tersebut berada saat mengajukan tiket.
Anda dapat mengajukan tiket untuk meminta konsultasi gratis mengenai solusi untuk skenario yang melibatkan LiteTopics.
Definisi
LiteTopic adalah kontainer sekunder untuk transmisi dan penyimpanan pesan di ApsaraMQ for RocketMQ. LiteTopic mengidentifikasi pesan dari kelas anak yang berbeda—seperti sesi atau task yang berbeda—dalam logika bisnis yang sama.
Fungsi utama LiteTopic adalah sebagai berikut:
Konsumsi eksklusif dan pemagaran data sekunder
Data dari kelas anak yang berbeda dapat dikelola dalam LiteTopics terpisah untuk mencapai penyimpanan dan pemagaran langganan yang lebih granular.
Identitas data dan izin
Selain identitas dan pengelolaan izin berbasis topik, Anda dapat menggunakan LiteTopics untuk memperhalus identitas dan izin pengguna lebih lanjut.
Hubungan model
Dalam model domain ApsaraMQ for RocketMQ, LiteTopic masuk ke alur pesan sebagai berikut:

Topik adalah kontainer tingkat atas untuk transmisi dan penyimpanan pesan di ApsaraMQ for RocketMQ. Jika tipe topik adalah Lite, Anda dapat membuat LiteTopics di dalamnya. Kombinasi topik dan LiteTopic secara unik mengidentifikasi kontainer penyimpanan pesan.
Jika jenis topiknya Lite, setiap wadah penyimpanan terdiri dari satu antrian secara default.
Properti internal
Nama LiteTopic
Definisi: Nama LiteTopic. Nama harus unik secara global dalam topik induknya.
Nilai: Jika tipe topik adalah Lite dan Anda memanggil setLiteTopic untuk sebuah pesan, sistem akan secara otomatis membuat LiteTopic yang sesuai jika belum ada.
Batasan: Untuk informasi selengkapnya, lihat Batasan parameter.
Waktu hidup (TTL)
Definisi: Waktu hidup (TTL) LiteTopic. Jika LiteTopic tidak menerima pesan apa pun selama periode yang lebih lama dari TTL-nya, LiteTopic tersebut akan dihapus secara otomatis. Penghapusan LiteTopic melepaskan kuota yang digunakan.
Nilai: Saat membuat topik bertipe Lite, Anda dapat mengatur nilai expiration.
Batasan: Untuk informasi selengkapnya, lihat Batasan parameter.
Kompatibilitas versi
Versi sisi server: 5.0-rmq-20251024-1 atau yang lebih baru
Versi klien: RocketMQ gRPC 5.1.0 atau yang lebih baru
Perbedaan antara lite topic dan topik normal
Skenario | Item | Topik Ringan | Topik Normal |
Penyimpanan pesan | Topik utama | Sama. Keduanya mengharuskan Anda membuat resource topik terlebih dahulu. | |
Topik sekunder | Anda dapat membuat jutaan resource topik sekunder (LiteTopics) di bawah satu topik. Resource sekunder ini memiliki banyak atribut baru. | Tidak ada sumber daya topik sekunder. | |
Pengelolaan siklus hidup otomatis | Siklus hidup topik sekunder (LiteTopic) dapat dikelola secara otomatis:
| Tidak ada | |
Pengurutan | Setiap LiteTopic hanya membuat satu queue. Pesan dalam queue yang sama disimpan secara berurutan.
| Beberapa queue dibuat. Hanya topik ordered yang dipartisi yang menjamin urutan. | |
TPS maksimum konkuren untuk mengirim dan menerima | Karena hanya ada satu queue, TPS maksimum untuk setiap LiteTopic terbatas. Namun, Anda dapat membuat jutaan LiteTopic di bawah satu topik, sehingga TPS maksimum total dapat meningkat seiring penambahan LiteTopic. | TPS topik dapat diskalakan secara horizontal berdasarkan jumlah queue dan node kluster. | |
Konsumsi pesan | Konsistensi hubungan langganan | Dapat tidak konsisten. Dalam kelompok yang sama, setiap konsumen dapat berlangganan koleksi LiteTopics yang berbeda. Batasan pada kelompok dilonggarkan. | Harus konsisten. Dalam kelompok yang sama, setiap konsumen harus memiliki hubungan langganan yang sama untuk berbagi pesan dari topik target. |
Pengurutan | Konsumsi berurutan. Pesan dalam LiteTopic hanya dapat diproses oleh satu thread konsumen. | Anda dapat memilih konsumsi konkuren atau konsumsi terurut. | |
Langganan dinamis | Setiap konsumen dapat secara dinamis menambah atau menghapus langganan ke LiteTopic tertentu. | Tidak ada | |
Jumlah LiteTopic yang dapat dilanggani oleh satu konsumen | Setiap konsumen dapat berlangganan ribuan LiteTopic. | Tidak ada | |
Keteramatan | Data metrik | Menyediakan metrik akumulasi pesan. Tidak menyediakan metrik latensi pemrosesan pesan. | Menyediakan metrik akumulasi pesan. Menyediakan metrik latensi pemrosesan pesan. |
Jejak pesan | Sama | ||
Skenario umum LiteTopic
Skenario 1: Komunikasi asinkron untuk sistem Multi-Agent guna mengatasi blocking akibat panggilan berdurasi panjang
Seiring meningkatnya kompleksitas skenario AI, agen tunggal menghadapi keterbatasan dalam situasi rumit. Mereka kurang memiliki pembagian tugas spesialis, kesulitan mengintegrasikan berbagai domain, dan tidak dapat membuat keputusan kolaboratif secara dinamis. Aplikasi dan alur kerja berbasis agen tunggal secara bertahap beralih ke aplikasi Multi-Agent. Namun, karena tugas AI bersifat long-running, panggilan sinkron dapat memblokir thread pemanggil, menyebabkan masalah skalabilitas dalam kolaborasi skala besar.

Seperti ditunjukkan pada gambar sebelumnya, alur kerja sistem Multi-Agent adalah sebagai berikut: Agen Supervisor membagi permintaan dan menugaskannya ke dua sub-agen. Kedua sub-agen tersebut menangani masalah spesifik domain masing-masing dan mengembalikan hasilnya ke Agen Supervisor. Agen Supervisor menggabungkan hasil tersebut dan mengembalikannya ke klien web. Solusi komunikasi asinkron ApsaraMQ for RocketMQ bekerja sebagai berikut:
Dalam alur penerimaan permintaan:
Anda dapat membuat topik permintaan untuk setiap sub-agen sebagai antrian buffer untuk task. Ini bisa berupa topik prioritas untuk memproses task prioritas tinggi terlebih dahulu.
Agen Supervisor mengirim informasi task yang telah dibagi ke topik permintaan yang sesuai.
Dalam alur respons:
Agen Supervisor membuat topik respons bertipe Lite dan berlangganan ke topik tersebut.
Sub-agen memproses task dan mengirim hasil respons ke LiteTopic dalam topik respons. LiteTopic dapat dinamai berdasarkan ID task untuk membuat LiteTopic khusus bagi setiap task.
Agen Supervisor berlangganan untuk mengambil hasil secara real-time, lalu mendorongnya ke klien web menggunakan protokol HTTP Server-Sent Events (SSE).
Skenario 2: Manajemen status sesi terdistribusi untuk mengatasi tantangan manajemen sesi dalam aplikasi AI
Pola interaksi aplikasi AI bersifat unik. Aplikasi ini melibatkan sesi multi-turn berdurasi panjang yang sangat bergantung pada daya komputasi bernilai tinggi. Ketika aplikasi bergantung pada koneksi persisten, seperti SSE, gangguan apa pun (misalnya restart gerbang, timeout koneksi, atau ketidakstabilan jaringan) dapat menyebabkan hilangnya konteks sesi saat ini. Hal ini juga membatalkan task AI yang sedang berjalan, sehingga membuang daya komputasi yang berharga.

Seperti ditunjukkan pada gambar sebelumnya, alur respons hasilnya sama dengan Skenario 1. Topik bertipe Lite digunakan untuk notifikasi real-time hasil respons. Setiap LiteTopic dapat diberi nama berdasarkan SessionID (misalnya, chatbot/{sessionID}), sehingga hasil sesi dikirimkan secara berurutan sebagai pesan dalam topik tersebut. Solusi berikut menjelaskan cara mempertahankan kelangsungan sesi setelah koneksi persisten dipulihkan:
Klien web 2 membuat koneksi persisten dengan node layanan aplikasi 1 dan membuat Session2.
Node layanan aplikasi 1 berlangganan ke LiteTopic [chat/SessionID2].
Komponen penjadwalan task model besar mengirim hasil ke LiteTopic [chat/SessionID2] berdasarkan informasi SessionID dalam permintaan.
Karena masalah jaringan atau pengecualian lain, koneksi WebSocket secara otomatis terhubung ulang ke node layanan aplikasi 2.
Node layanan aplikasi 1 berhenti berlangganan dari LiteTopic [chat/SessionID2], dan node layanan aplikasi 2 berlangganan ke LiteTopic [chat/SessionID2].
LiteTopic [chat/SessionID2] terus mendorong pesan yang belum dikonsumsi berikutnya ke node layanan aplikasi 2 berdasarkan progres konsumsi sebelumnya. Hal ini menjamin kelangsungan status dan data sesi.
Kode contoh
Untuk contoh lengkap, lihat kode contoh di RocketMQ 5.x gRPC SDK.
Kirim pesan
Producer producer = provider.newProducerBuilder()
.setTopics(topic)
.setClientConfiguration(clientConfiguration)
.build();
final Message message = provider.newMessageBuilder()
.setTopic(topic)
// Setel kunci pesan. Anda dapat menggunakan kunci ini untuk menemukan pesan tertentu secara akurat.
.setKeys("messageKey")
// Setel LiteTopic.
.setLiteTopic("lite-topic-1")
// Isi pesan.
.setBody("messageBody".getBytes())
.build();
try {
final SendReceipt sendReceipt = producer.send(message);
log.info("Pesan berhasil dikirim, messageId={}", sendReceipt.getMessageId());
} catch (LiteTopicQuotaExceededException e) {
// Kuota LiteTopic terlampaui. Evaluasi dan tingkatkan kuota.
log.error("Kuota topik Lite terlampaui", e);
} catch (Throwable t) {
log.error("Gagal mengirim pesan", t);
}
Konsumsi pesan
Anda perlu menggunakan kelas LitePushConsumer:
// Inisialisasi LitePushConsumer. Anda perlu mengikat kelompok konsumen, topik target, parameter komunikasi, dan lainnya.
LitePushConsumer litePushConsumer = provider.newLitePushConsumerBuilder()
.setClientConfiguration(clientConfiguration)
// Topik yang diikat saat kelompok konsumen dibuat di konsol.
.bindTopic(topicName)
// Setel kelompok konsumen.
.setConsumerGroup(consumerGroup)
.setMessageListener(messageView -> {
// Proses pesan dan kembalikan hasil konsumsi.
LOGGER.info("Mengonsumsi pesan={}", messageView);
return ConsumeResult.SUCCESS;
})
.build();
try {
// Berlangganan ke kumpulan LiteTopics yang Anda minati.
litePushConsumer.subscribeLite("lite-topic-1");
litePushConsumer.subscribeLite("lite-topic-2");
litePushConsumer.subscribeLite("lite-topic-3");
} catch (LiteSubscriptionQuotaExceededException e) {
// Kuota langganan LiteTopic telah terlampaui. Evaluasi dan tingkatkan kuota.
log.error("Kuota langganan lite terlampaui", e);
} catch (Throwable t) {
log.error("Gagal berlangganan lite topic", t);
}
// Setelah pemrosesan bisnis selesai, segera berhenti berlangganan dari LiteTopics yang tidak lagi digunakan.
litePushConsumer.unsubscribeLite("lite-topic-3");
// Dapatkan himpunan LiteTopics yang sedang dilanggan.
Set<String> liteTopicSet = litePushConsumer.getLiteTopicSet();
Ubah hubungan langganan secara dinamis
/**
* Tambahkan hubungan langganan secara dinamis.
* Metode subscribeLite() memulai permintaan jaringan dan melakukan verifikasi kuota, sehingga panggilan ini dapat gagal.
* Selalu periksa hasil panggilan ini untuk memastikan langganan berhasil ditambahkan.
* Kemungkinan skenario kegagalan meliputi:
* 1. Terjadi kesalahan permintaan jaringan. Anda dapat mencoba ulang operasi tersebut.
* 2. Verifikasi kuota gagal, dan LiteSubscriptionQuotaExceededException dilemparkan.
* Evaluasi apakah kuota memenuhi kebutuhan Anda dan segera gunakan unsubscribeLite() untuk berhenti berlangganan dari topik yang tidak lagi digunakan guna melepaskan resource.
*/
litePushConsumer.subscribeLite("lite-topic-1");
// Hapus hubungan langganan secara dinamis.
litePushConsumer.unsubscribeLite("lite-topic-1");
Batasan
Satu konsumen dapat berlangganan maksimal 2.000 LiteTopic. Anda dapat mengirim tiket untuk menyesuaikan batas ini.
TPS konsumsi maksimum untuk satu LiteTopic adalah 200.
Untuk memastikan stabilitas layanan, berlaku batasan jumlah LiteTopics yang dapat dibuat atau dilanggan dalam satu instans. Kuota spesifik tercantum dalam tabel berikut. Anda dapat mengajukan tiket untuk menyesuaikan kuota ini.
Jumlah LiteTopics yang dibuat
Definisi: Jumlah total LiteTopics yang telah dibuat dan sedang aktif dalam satu instans.
Pemicu dan dampak: Jika batas ini tercapai dan klien mencoba mengirim pesan ke LiteTopic yang belum ada—yang memicu pembuatan otomatis—sistem tidak dapat membuat LiteTopic tersebut dan mengembalikan kegagalan pengiriman pesan.
Jumlah langganan LiteTopic
Definisi: Jumlah semua hubungan langganan valid yang dibentuk antara semua klien konsumen online dan LiteTopics dalam suatu instans. Nilai ini bersifat dinamis.
Dampak: Jika batas ini tercapai, upaya apa pun oleh klien konsumen untuk berlangganan LiteTopic baru akan gagal, dan hubungan langganan baru tidak dapat dibentuk.
Aturan khusus: Bahkan jika LiteTopic telah dihapus dari sistem, jika klien konsumen masih mempertahankan langganan ke LiteTopic tersebut, hubungan langganan tersebut tetap dihitung dalam jumlah total langganan hingga konsumen berhenti berlangganan.
Instans Serverless
Arsitektur penyebaran | Mode kapasitas | Spesifikasi | Jumlah maksimum LiteTopic yang dapat dibuat atau dilanggani |
Dedicated | Reserved + Elastic | 5.000 | 300.000 |
10.000 | 600.000 | ||
15.000 | 720.000 | ||
[20.000, 50.000] | 1.000.000 | ||
(50.000, 100.000] | 1.500.000 | ||
(100.000, 200.000] | 2.400.000 | ||
(200.000, 300.000] | 4.700.000 | ||
(300.000, 500.000] | 6.300.000 | ||
(500.000, 1.000.000] | 11.600.000 |
Instans non-Serverless (subscription dan pay-as-you-go)
Edisi Standar
Tipe instans | Batas TPS dasar untuk pengiriman dan penerimaan pesan (ops/s) | Jumlah maksimum LiteTopic yang dapat dibuat atau dilanggani |
rmq.s2.2xlarge | 2.000 | 150.000 |
rmq.s2.4xlarge | 4.000 | 250.000 |
rmq.s2.6xlarge | 6.000 | 300.000 |
Edisi Profesional
Jenis instans | Batas TPS dasar untuk pengiriman dan penerimaan pesan (ops/s) | Jumlah maksimum LiteTopic yang dapat dibuat atau dilanggani |
rmq.p2.2xlarge | 2.000 | 150.000 |
rmq.p2.4xlarge | 4.000 | 250.000 |
rmq.p2.6xlarge | 6.000 | 300.000 |
rmq.p2.10xlarge | 10.000 | 600.000 |
rmq.p2.20xlarge | 20.000 | 800.000 |
rmq.p2.30xlarge | 30.000 | 1.000.000 |
rmq.p2.40xlarge | 40.000 | 1.200.000 |
rmq.p2.50xlarge | 50.000 | 1.400.000 |
rmq.p2.100xlarge | 100.000 | 2.200.000 |
rmq.p2.120xlarge | 120.000 | 270 W |
rmq.p2.150xlarge | 150.000 | 3.300.000 |
rmq.p2.200xlarge | 200.000 | 4,5 juta |
Edisi Platinum
Jenis instans | Batas TPS dasar untuk pengiriman dan penerimaan pesan (ops/s) | Jumlah maksimum LiteTopic yang dapat dibuat atau dilanggani |
rmq.u2.10xlarge | 10.000 | 600.000 |
rmq.u2.20xlarge | 20.000 | 800.000 |
rmq.u2.30xlarge | 30.000 | 1.000.000 |
rmq.u2.40xlarge | 40.000 | 1.200.000 |
rmq.u2.50xlarge | 50.000 | 1.400.000 |
rmq.u2.60xlarge | 60.000 | 1.600.000 |
rmq.u2.70xlarge | 70.000 | 1.700.000 |
rmq.u2.80xlarge | 80.000 | 1.800.000 |
rmq.u2.90xlarge | 90.000 | 2.000.000 |
rmq.u2.100xlarge | 100.000 | 2.200.000 |
rmq.u2.120xlarge | 120.000 | 2.700.000 |
rmq.u2.150xlarge | 150.000 | 3.300.000 |
rmq.u2.200xlarge | 200.000 | 4.500.000 |
rmq.u2.250xlarge | 250.000 | 5.600.000 |
rmq.u2.300xlarge | 300.000 | 6.300.000 |
rmq.u2.350xlarge | 350.000 | 7.500.000 |
rmq.u2.400xlarge | 400.000 | 9.300.000 |
rmq.u2.450xlarge | 450.000 | 10.400.000 |
rmq.u2.500xlarge | 500.000 | 11.600.000 |
rmq.u2.550xlarge | 550.000 | 12.800.000 |
rmq.u2.600xlarge | 600.000 | 14.000.000 |
rmq.u2.1000xlarge | 1.000.000 | 23.200.000 |