全部产品
Search
文档中心

ApsaraMQ for Kafka:Aturan untuk mengonfigurasi parameter klien

更新时间:Jun 28, 2025

Topik ini menjelaskan aturan untuk mengonfigurasi parameter klien Message Queue for Apache Kafka. Disarankan untuk menentukan nilai yang sesuai untuk parameter ini berdasarkan kebutuhan bisnis Anda.

Tabel berikut menjelaskan parameter untuk berbagai jenis klien:

Tabel 1. Parameter Klien Producer
ParameterDeskripsi
retriesJumlah percobaan ulang yang diizinkan untuk pesan yang gagal dikirim.
retry.backoff.msInterval antara percobaan ulang ketika pesan gagal dikirim. Kami menyarankan Anda mengatur parameter ini menjadi 1000. Satuan: milidetik.
acksMekanisme persistensi untuk mengirim pesan. Untuk meningkatkan performa pengiriman pesan, kami menyarankan Anda mengatur parameter ini menjadi 1.
  • Jika Anda mengatur parameter ini menjadi 0, tidak ada respons yang diterima dari broker. Dalam mode ini, performa pengiriman pesan tinggi, tetapi risiko kehilangan data juga tinggi.
  • Jika Anda mengatur parameter ini menjadi 1, respons dikembalikan ketika data ditulis ke leader. Dalam mode ini, performa pengiriman pesan dan risiko kehilangan data moderat. Jika terjadi kegagalan pada leader, kehilangan data mungkin terjadi.
  • Jika Anda mengatur parameter ini menjadi all, respons dikembalikan ketika data ditulis ke leader dan disinkronkan ke followers. Dalam mode ini, performa pengiriman pesan rendah, tetapi risiko kehilangan data rendah. Kehilangan data hanya terjadi jika leader dan followers gagal secara bersamaan.
batch.sizeVolume pesan yang di-cache untuk dikirim ke setiap partisi. Ketika volume pesan yang di-cache mencapai batas atas yang ditentukan, permintaan jaringan dipicu. Kemudian, produser mengirim pesan ke broker dalam batch. Jika Anda mengatur parameter batch.size ke nilai kecil, performa pengiriman pesan dan stabilitas mungkin terpengaruh. Kami menyarankan Anda menggunakan nilai default 16384. Satuan: byte.
linger.msDurasi penyimpanan maksimum untuk setiap pesan dalam cache. Jika pesan disimpan dalam cache selama periode waktu yang melebihi durasi penyimpanan maksimum, produser segera mengirim pesan ke broker tanpa menggunakan parameter batch.size. Kami menyarankan Anda mengatur parameter linger.ms ke nilai yang berkisar antara 100 hingga 1000 berdasarkan kebutuhan bisnis Anda. Satuan: milidetik.
partitioner.classStrategi yang Anda gunakan untuk partisi. Kami menyarankan Anda menggunakan strategi partisi sticky untuk meningkatkan performa pengiriman pesan. Jika versi klien produser Anda adalah 2.4 atau lebih baru, strategi partisi sticky digunakan secara default.
buffer.memoryUkuran kolam memori pada klien. Jika Anda mengatur parameter ini ke nilai kecil, waktu yang dibutuhkan untuk mengajukan memori mungkin lama. Hal ini menyebabkan performa pengiriman pesan rendah atau timeout pengiriman pesan. Kami menyarankan Anda mengatur parameter ini ke nilai yang sama dengan atau lebih besar dari nilai Nilai parameter batch.size × Jumlah partisi × 2. Satuan: byte.
Tabel 2. Parameter Klien Consumer
ParameterDeskripsi
fetch.min.bytes

Jumlah minimum data yang dapat ditarik konsumen dari broker. Sebelum mengonfigurasi parameter ini, Anda harus mengevaluasi jumlah pesan yang akan dikirim oleh produser. Jika Anda mengatur parameter ini ke nilai yang terlalu besar, penundaan pesan mungkin meningkat ketika konsumen mengonsumsi pesan. Jika Anda mengatur parameter ini ke nilai yang terlalu kecil, frekuensi konsumen menarik pesan mungkin meningkat. Satuan: byte.

fetch.max.wait.ms

Jumlah waktu maksimum yang ditunggu broker untuk mengembalikan respons. Satuan: milidetik.

  • Jika Anda menggunakan penyimpanan lokal dan mengonfigurasi parameter fetch.min.bytes, broker mengembalikan respons setelah nilai yang ditentukan oleh parameter fetch.min.bytes tercapai. Setelah waktu yang ditentukan oleh parameter fetch.max.wait.ms berakhir, respons dikembalikan terlepas dari apakah nilai yang ditentukan oleh parameter fetch.min.bytes tercapai.
  • Jika Anda menggunakan penyimpanan cloud, broker segera mengembalikan respons begitu data baru dikirimkan, bukan menunggu hingga waktu yang ditentukan oleh parameter fetch.min.bytes berakhir.
max.partion.fetch.bytes

Jumlah data maksimum yang dikembalikan oleh setiap partisi. Satuan: byte.

session.timeout.ms

Interval konsumen mengirimkan sinyal heartbeat. Jika tidak ada sinyal heartbeat yang dikirimkan dalam interval tersebut, broker menentukan bahwa konsumen mati, dan rebalance dipicu. Selama rebalance, klien berhenti mengonsumsi data dan menunggu rebalance selesai. Kami menyarankan Anda mengatur parameter ini ke nilai yang berkisar antara 30000 hingga 60000. Satuan: milidetik.

Nilai valid: 6000 hingga 300000.

max.poll.records

Jumlah maksimum pesan yang dikembalikan dalam satu panggilan ke poll(). Jika Anda mengatur parameter ini ke nilai yang terlalu besar, Anda harus memproses logika konsumsi pesan secepat mungkin. Jika logika konsumsi pesan diproses dengan kecepatan rendah, data dalam panggilan berikutnya ke poll() terpengaruh. Akibatnya, tidak ada sinyal heartbeat yang dikirimkan selama interval yang ditentukan oleh parameter session.timeout.ms, dan rebalance dipicu. Kami menyarankan Anda mengatur parameter ini ke nilai yang lebih kecil dari nilai <Jumlah pesan yang dikonsumsi setiap thread per detik> × <Jumlah thread yang mengonsumsi pesan> × <Nilai yang ditentukan oleh parameter session.timeout.ms, dalam detik>.

Penting Dalam Java Client 0.10.1 dan versi lebih baru, thread terpisah digunakan untuk mengirimkan sinyal heartbeat. Jika Anda menggunakan Java Client versi sebelumnya atau klien dalam bahasa lain, Anda harus menentukan nilai yang sesuai untuk parameter yang terkait dengan waktu pemrosesan data dan interval pengiriman sinyal heartbeat. Ini membantu mencegah rebalance yang sering memengaruhi konsumsi normal.
max.poll.interval.msInterval maksimum antara pemanggilan poll(). Parameter ini hanya diperlukan dalam Java client 0.10.1 dan versi lebih baru. Jika konsumen tidak memanggil poll() selama interval yang ditentukan oleh parameter session.timeout.ms, broker menentukan bahwa konsumen mati, dan rebalance dipicu. Oleh karena itu, Anda harus mengatur parameter ini ke nilai yang sesuai. Kami menyarankan Anda mengatur parameter ini ke nilai yang lebih besar dari nilai <Waktu yang dibutuhkan untuk mengonsumsi pesan> × <Jumlah catatan data yang ditarik oleh poll()>. Dalam banyak kasus, Anda dapat menggunakan nilai default. Satuan: milidetik.

Nilai default: 300000.

enable.auto.commitMenentukan apakah offset konsumen dikomit otomatis. Nilai valid:
  • true
  • false

Nilai default: true.

auto.commit.interval.msInterval offset konsumen dikomit secara otomatis. Nilai default: 1000. Satuan: milidetik.
auto.offset.resetKebijakan yang digunakan untuk mereset offset konsumen.
  • latest: mereset offset konsumen ke offset terbaru.
  • earliest: mereset offset konsumen ke offset paling awal.
  • none: tidak mereset offset konsumen.
Catatan
  • Kami menyarankan Anda mengatur parameter ini ke latest alih-alih earliest. Dengan cara ini, konsumen tidak mengonsumsi pesan dari awal ketika offset tidak valid. Ini membantu mencegah konsumen mengonsumsi pesan berulang kali.
  • Jika Anda mengelola offset konsumen secara manual, Anda dapat mengatur parameter ini ke none.