All Products
Search
Document Center

Simple Message Queue (formerly MNS):Pesan terurut

Last Updated:Jun 21, 2026

Simple Message Queue (formerly MNS) mendukung pesan terurut. Topik ini menjelaskan konsep inti, perbedaan dari pesan normal, metode pembuatan dan penggunaan, instruksi API, serta batasan dan praktik terbaik terkait.

Definisi fitur

Simple Message Queue (formerly MNS) menyediakan pemrosesan first-in-first-out (FIFO) untuk pesan dalam kelompok yang sama, memastikan penanganan berurutan dalam skenario bisnis.

Skenario

Pesan terurut ideal untuk skenario bisnis yang memerlukan pengurutan pesan secara ketat:

  • Transisi status pesanan

    Dalam sistem pesanan E-dagang, status seperti pembuatan pesanan → pembayaran → pengiriman → konfirmasi penerimaan harus diproses secara kronologis agar status bisnis tetap akurat.

  • Pemrosesan transaksi keuangan

    Dalam sistem perdagangan sekuritas atau saham, pesanan dengan harga penawaran yang sama harus diproses secara ketat sesuai urutan pemasukannya. Sistem downstream harus menangani pesanan tersebut sesuai urutan pengirimannya.

  • Sinkronisasi database

    Database upstream melakukan operasi insert, delete, atau update. Log operasi biner dikirimkan sebagai pesan ke sistem downstream, yang kemudian memainkannya ulang untuk memperbarui data secara berurutan dan menghindari inkonsistensi data.

  • Pencatatan log bisnis

    Log dari operasi bisnis kritis harus disimpan secara ketat dalam urutan kronologis untuk mendukung audit dan troubleshooting.

Konsep utama

  • MessageGroupId: Pengidentifikasi kelompok pesan. Sistem menjamin urutan pesan dalam setiap kelompok: pesan dengan MessageGroupId yang sama diproses secara ketat berurutan, sedangkan pesan dari kelompok berbeda dapat diproses secara paralel.

  • Visibility timeout: Setelah pesan berhasil ditarik, pesan tersebut tidak terlihat oleh konsumen lain hingga waktu timeout habis. Ini mencegah beberapa konsumen memproses pesan yang sama secara bersamaan. Jika pesan tidak dikonfirmasi sebagai dihapus sebelum timeout, pesan tersebut akan kembali terlihat.

  • Mekanisme penguncian kelompok: Dalam antrian terurut, begitu pesan dengan MessageGroupId tertentu ditarik tetapi belum dikonfirmasi sebagai dihapus (yaitu masih tidak terlihat), semua pesan berikutnya dalam MessageGroupId yang sama akan diblokir. Hal ini memastikan urutan konsumsi yang ketat. Hanya setelah pesan saat ini dikonfirmasi sebagai dihapus atau visibility timeout-nya habis, pesan berikutnya dalam kelompok yang sama dapat ditarik.

Perbedaan dari pesan normal

  • Semantik pengurutan:

    • Pesan normal (antrian/topik standar): Mengirimkan setidaknya satu kali secara best effort, tanpa jaminan urutan.

    • Pesan terurut (antrian/topik FIFO): Dalam MessageGroupId yang sama, pesan dikonsumsi secara ketat sesuai urutan kedatangannya di server. Pesan yang lebih awal harus sepenuhnya diproses sebelum pesan berikutnya dapat dikonsumsi.

  • Model konkurensi:

    • Pesan normal: Tidak ada batasan pengelompokan; dioptimalkan untuk throughput keseluruhan.

    • Pesan terurut: Menggunakan MessageGroupId sebagai unit konkurensi—serial dalam satu kelompok, paralel antar kelompok.

  • Persyaratan pesan:

    • Mengirim pesan terurut memerlukan penentuan MessageGroupId (berlaku untuk antrian maupun topik).

Memulai

Antrian FIFO

  • Buat antrian:

    1. Masuk ke Konsol Simple Message Queue (formerly MNS).

    2. Di panel navigasi kiri, pilih Queue Model > Queues.

    3. Di bilah navigasi atas, pilih Wilayah.

    4. Di halaman Queues, klik Create Queue.

    5. Di panel Create Queue, atur Queue Type menjadi FIFO Queue, konfigurasi parameter lainnya, lalu klik OK.

      Parameter lain yang dapat dikonfigurasi meliputi Maximum message size, Long polling period, Message visibility timeout, Message retention period, Message delay time, Enable logging, Dead-letter policy, dan Rate limiting policy.

  • Kirim pesan:

    • Gunakan SendMessage dan sertakan MessageGroupId. Gunakan kunci bisnis yang stabil seperti ID pesanan.

    • Jika Anda menghilangkan MessageGroupId, sistem akan mengembalikan kode kesalahan FifoMissingMessageGroupId.

  • Terima dan konfirmasi:

    • Gunakan ReceiveMessage untuk menarik pesan. Respons mencakup MessageGroupId. Setelah diproses, panggil DeleteMessage untuk mengonfirmasi.

Topik FIFO

  • Buat topik:

    1. Masuk ke Konsol Simple Message Queue (formerly MNS).

    2. Di panel navigasi kiri, pilih Topic Model > Topics.

    3. Di bilah navigasi atas, pilih Wilayah.

    4. Di halaman Topics, klik Create Topic.

    5. Di panel Create Topic, atur Topic Type menjadi FIFO Topic, konfigurasi parameter lainnya, lalu klik OK.

  • Buat langganan:

    Berlangganan ke antrian FIFO untuk memastikan pengurutan pesan. Topik normal hanya dapat berlangganan ke antrian standar. Untuk detailnya, lihat Langkah 3: Buat langganan.

  • Publikasikan pesan:

    • Gunakan PublishMessage dan sertakan MessageGroupId.

    • Jika Anda menghilangkan MessageGroupId, sistem akan mengembalikan kode kesalahan FifoMissingMessageGroupId.

  • Konsumsi dan konfirmasi:

    • Di sisi antrian FIFO yang dilanggankan, gunakan ReceiveMessage untuk menarik pesan dan DeleteMessage untuk mengonfirmasi, mempertahankan pemrosesan berurutan dalam setiap kelompok.

Penggunaan API

API terkait antrian

Nama API

Deskripsi parameter

Deskripsi respons

CreateQueue-Buat antrian

Parameter input QueueType:

  • normal (antrian standar)

  • fifo (antrian FIFO)

Membuat antrian dengan tipe yang ditentukan.

GetQueueAttributes-Dapatkan atribut antrian

Tidak ada parameter khusus

Mengembalikan informasi antrian, termasuk bidang QueueType.

ListQueue-Daftar semua antrian di bawah Akun Alibaba Cloud

Tidak ada parameter khusus

Mengembalikan daftar antrian. Setiap antrian mencakup bidang QueueType.

API terkait topik

Nama API

Deskripsi parameter

Deskripsi respons

CreateTopic-Buat topik

Parameter input TopicType:

  • normal (topik standar)

  • fifo (topik FIFO)

Membuat topik dengan tipe yang ditentukan.

GetTopicAttributes-Dapatkan atribut topik

Tidak ada parameter khusus

Mengembalikan informasi topik, termasuk bidang TopicType.

ListTopic-Daftar topik di bawah Akun Alibaba Cloud

Tidak ada parameter khusus

Mengembalikan daftar topik. Setiap topik mencakup bidang TopicType.

API kirim/terima pesan

Nama API

Persyaratan parameter

Deskripsi Pengembalian

Catatan

SendMessage

Antrian FIFO memerlukan MessageGroupId.

Respons standar.

Mengirim satu pesan ke antrian.

BatchSendMessage

Antrian FIFO memerlukan MessageGroupId.

Respons standar.

Mengirim beberapa pesan ke antrian dalam satu batch.

PublishMessage

Topik FIFO memerlukan MessageGroupId.

Respons standar.

Memublikasikan pesan ke topik.

ReceiveMessage

Tidak ada parameter khusus.

Badan respons mencakup MessageGroupId.

Menerima satu pesan dari antrian.

BatchReceiveMessage

Mendukung parameter numOfMessages.

Badan respons mencakup MessageGroupId.

Dapat mengembalikan pesan dari beberapa kelompok. Urutan dipertahankan dalam setiap kelompok.

Batasan

  • Wilayah yang didukung meliputi Tiongkok (Shenzhen), Tiongkok (Shanghai), dan Tiongkok (Hangzhou). Untuk meminta dukungan FIFO di wilayah lain, submit a ticket.

  • Group ID wajib: Mengirim pesan ke antrian atau topik FIFO memerlukan MessageGroupId.

  • Kompatibilitas tipe:

    • Antrian surat mati (DLQ): Hanya antrian dengan tipe yang sama yang dapat di-bind. Pesan FIFO hanya dapat di-bind ke antrian surat mati FIFO, dan pesan normal hanya dapat di-bind ke antrian surat mati standar.

    • Langganan: Topik standar hanya dapat berlangganan ke antrian standar. Untuk pengiriman terurut, langgankan topik FIFO ke antrian FIFO.

  • Peek tidak didukung: Antrian FIFO tidak mendukung antarmuka peeking pesan (PeekMessage).

Praktik terbaik

  • Desain kelompok:

    • Gunakan nilai MessageGroupId yang stabil dan terdistribusi merata (seperti ID pesanan) untuk mencegah beberapa kelompok hot-spot menjadi bottleneck performa.

    • Untuk beban kerja hot-spot ekstrem, bagi kelompok lebih lanjut di lapisan aplikasi untuk meningkatkan konkurensi.

  • Visibility timeout: Atur berdasarkan durasi pemrosesan aktual untuk memastikan aplikasi Anda menyelesaikan pemrosesan dan mengonfirmasi pesan sebelum timeout, sehingga mengurangi pengiriman duplikat.

  • Idempotensi dan retry: Terapkan pemrosesan idempoten dan logika retry pada konsumen untuk memastikan konsistensi end-to-end.

  • Penerimaan batch: Tingkatkan numOfMessages untuk meningkatkan throughput, selama penundaan pemrosesan per pesan tetap dapat diterima.

FAQ

Bagaimana pengurutan didefinisikan?

Pesan dengan MessageGroupId yang sama dikirimkan dan diproses secara ketat sesuai urutan pengiriman. Pesan dari kelompok berbeda dapat diproses secara paralel.

Apakah saya harus menyediakan MessageGroupId?

Ya. Mengirim pesan ke antrian atau topik FIFO memerlukan MessageGroupId. Tanpa itu, pengurutan tidak dapat dijamin.

Bagaimana cara memilih antara antrian/topik FIFO dan standar?

Gunakan antrian atau topik FIFO jika bisnis Anda memerlukan pengurutan ketat (seperti transisi status pesanan). Gunakan antrian atau topik standar jika Anda memprioritaskan throughput dan elastisitas keseluruhan serta tidak memerlukan pengurutan pesan. Untuk memulai, buat FIFO Queue atau FIFO Topic di Konsol, sertakan MessageGroupId saat mengirim, dan baca atribut ini di sisi konsumen untuk pemrosesan dan konfirmasi terurut.