全部产品
Search
文档中心

Platform For AI:Langganan dan dorongan layanan antrian

更新时间:Jun 22, 2025

Langganan dan dorongan memungkinkan pengiriman data siap pakai ke klien secara langsung, mengurangi latensi akibat polling melalui Get API serta beban layanan antrian dari permintaan berulang. Namun, langganan dan dorongan memiliki tingkat kompleksitas tertentu karena melibatkan beberapa konsep tambahan. Topik ini menjelaskan cara menggunakan fitur langganan dan dorongan dalam layanan antrian.

Konsumen

Konsumen adalah program klien yang berlangganan data dari layanan antrian. Saat klien menggunakan Watch API untuk memanggil data, objek konsumen dibuat di dalam layanan antrian. Parameter dalam API (seperti ukuran jendela dan tag) digunakan sebagai atribut konsumen. Status konsumen dapat dilihat melalui Attribute API. Contoh:

[OK] Attributes: 
consumers.list.[0] : Id: default_group.u1, Index: 0, Pending: 0, Status: Complete, Idle: 2.091s, Window: 0, Slots: 0, AutoCommit: true
consumers.list.[1] : Id: default_group.u2, Index: 0, Pending: 0, Status: Complete, Idle: 1.124s, Window: 0, Slots: 0, AutoCommit: true
consumers.stats.total : 2

consumers.stats.total menunjukkan jumlah total konsumen. consumers.list adalah daftar konsumen. Tabel berikut menjelaskan kolom-kolomnya:

Parameter

Deskripsi

Id

ID konsumen, dalam format <ID kelompok konsumen.ID konsumen>.

Index

Indeks data yang dikonsumsi oleh konsumen.

Pending

Jumlah data yang sedang diproses tetapi belum dikomit oleh konsumen saat ini.

Status

Status konsumen. Nilai valid:

  • Running: Konsumen sedang berjalan.

  • Exit: Konsumen keluar untuk periode panjang dan tidak ada data yang dikonsumsi.

  • Complete: Konsumen keluar dan data telah dikonsumsi.

  • Leaving: Konsumen keluar untuk periode singkat.

Window

Ukuran jendela konsumen, yaitu jumlah maksimum data yang didorong.

Slots

Jumlah jendela yang idle. Nilai 0 menunjukkan bahwa jendela sedang digunakan.

AutoCommit

Menunjukkan apakah akan secara otomatis mengirim komit setelah data dikirim.

Tags

Kondisi filter konsumen.

null

Saat menggunakan Watch API dengan tag, pastikan bahwa tag yang digunakan oleh konsumen dalam kelompok konsumen yang sama semuanya sama.

Saat menggunakan Watch API dengan eksekusi tag data, Anda akan melihat kolom Tags tambahan, misalnya:

consumers.list.[0] : Id: ..., Pending: 0, ..., Window: ..., Tags: tags[foo=bar]

Kolom tersebut menunjukkan tag data yang dilanggan oleh konsumen. Data hanya dikirim ke konsumen jika memenuhi kondisi tertentu.

Kelompok konsumen

Kelompok konsumen adalah kumpulan konsumen yang berlangganan layanan antrian dengan kondisi filter yang sama. Konsumen dalam kelompok yang sama tidak boleh memiliki nama yang identik, tetapi konsumen di kelompok berbeda dapat memiliki nama yang sama.

Dalam kelompok konsumen yang sama, data didistribusikan secara merata ke setiap konsumen. Di antara kelompok berbeda, data didorong secara paralel ke konsumen di setiap kelompok. Contohnya:

  • Konsumen dalam kelompok yang sama menerima data yang berbeda.

  • Konsumen dalam kelompok berbeda menerima data yang sama.

null

Jika konsumen menghapus data melalui API, data langsung dihapus dan tidak dapat diterima oleh konsumen di kelompok lain.

Status konsumen dalam layanan antrian dapat dilihat melalui Attribute API. Berikut adalah contohnya:

groups.list.[0] : Id: default_group, Index: 0, Pending: 0, Delivered: 0, Consumers: 1
groups.list.[1] : Id: group, Index: 0, Pending: 0, Delivered: 1, Consumers: 0

groups.list adalah daftar konsumen. Tabel berikut menjelaskan kolom-kolomnya:

Parameter

Deskripsi

Id

ID kelompok konsumen.

Index

Indeks yang dikonsumsi oleh kelompok konsumen saat ini, yaitu indeks terbesar dari konsumen dalam kelompok konsumen.

Pending

Jumlah data yang sedang diproses tetapi belum dikomit oleh kelompok konsumen saat ini.

Delivered

Jumlah pesan yang didorong.

Consumers

Jumlah data yang dikonsumsi dalam kelompok konsumen.

Jumlah kelompok konsumen tidak terbatas, dan statusnya dipertahankan setelah dibuat. Kelompok konsumen tidak dibersihkan secara otomatis.

Menggunakan konsumen dan kelompok konsumen

Anda dapat mendeklarasikan konsumen dan kelompok konsumen melalui header HTTP di Watch API atau saat menginisialisasi klien di SDK. Kunci header HTTP juga dapat diperoleh menggunakan Attributes API.

meta.header.group : X-EAS-QueueService-Gid
meta.header.user : X-EAS-QueueService-Uid

Deklarasikan ID konsumen dan ID kelompok konsumen melalui X-EAS-QueueService-Uid dan X-EAS-QueueService-Gid, masing-masing.

Komit dan negatif

Layanan antrian mendukung dua metode konsumsi: Komit dan Negatif. Keduanya beroperasi pada indeks data tetapi memiliki semantik yang berbeda.

  • Komit menunjukkan bahwa konsumen telah menerima data dan menyelesaikan pemrosesan, sehingga batch berikutnya dapat didorong.

  • Negatif menunjukkan bahwa konsumen telah menerima data tetapi tidak dapat memprosesnya. Layanan antrian memutuskan apakah akan mendorong batch berikutnya berdasarkan kode kesalahan. Dalam mode Negatif, Anda dapat mendeklarasikan penyebab dan kode kesalahan dalam teks, sehingga data didorong ke konsumen lain. Tabel berikut mencantumkan kode kesalahan khusus yang dapat ditangani oleh layanan antrian:

    Kode

    Deskripsi

    Shutdown

    Menunjukkan bahwa konsumen keluar dan layanan antrian tidak melanjutkan dorongan data.

Penyeimbangan ulang data

Data mungkin tidak dapat dikirim dalam skenario berikut:

  • Saat layanan prediksi diperbarui bergulir, beberapa konsumen dihentikan, menyebabkan data yang sedang diproses tidak dapat dikirim.

  • Terjadi kesalahan internal dan konsumen mogok.

  • Konsumen tidak dapat memproses data yang diterima dan mengeksekusi komit Negatif.

Data yang tidak dapat diproses ini akan didistribusikan ulang ke konsumen lain oleh layanan antrian. Mekanisme ini disebut penyeimbangan ulang data. Penyeimbangan ulang data dilakukan dalam kasus berikut:

  • Konsumen mana pun memasuki status Exit.

  • Konsumen tidak menerima dorongan data baru saat jendela memiliki ruang idle.

Layanan antrian mempertahankan penghitung pengiriman untuk setiap data. Setiap kali data diseimbangkan ulang dan didistribusikan, penghitung bertambah. Selama proses penyeimbangan ulang, jika penghitung pengiriman suatu data melebihi jumlah maksimum pengiriman, data tersebut diperlakukan sebagai surat mati. Layanan antrian mengeksekusi kebijakan surat mati yang telah dikonfigurasi. Secara default, data dikirim ke antrian ekor.

Antrian ekor

Antrian ekor adalah antrian bantu yang digunakan untuk menyimpan data yang tidak didorong ke konsumen, seperti surat mati atau data kontrol kustom. Ini adalah instance antrian dalam layanan antrian dan memiliki API yang sama. Setiap antrian input dan output memiliki antrian ekor.

null

Antrian ekor dan antrian standar berbagi panjang antrian maksimum. Jika panjang maksimum adalah 10 dan antrian standar menempati 6, maka antrian ekor paling banyak bisa 4. Jika antrian ekor penuh, menulis ke dalamnya akan mengembalikan kesalahan panjang antrian. Oleh karena itu, Anda perlu secara teratur mengamati dan membersihkan antrian ekor.

Saat memanggil API, Anda dapat mendeklarasikan akses ke antrian ekor dengan menambahkan header HTTP berikut:

X-EAS-QueueService-Access-Rear: true