All Products
Search
Document Center

ApsaraMQ for RocketMQ:Graceful shutdown

Last Updated:Mar 11, 2026

Saat melakukan rolling upgrade atau restart node, ApsaraMQ for RocketMQ menerapkan graceful shutdown untuk mengosongkan koneksi aktif dan menyimpan pesan yang sedang diproses sebelum node penyimpanan offline. Pendekatan ini mencegah kehilangan pesan, menghindari error pada client, serta menjaga produsen dan konsumen tetap beroperasi dengan gangguan minimal.

Cara kerja

Ketika sebuah node penyimpanan perlu direstart, ApsaraMQ for RocketMQ mengoordinasikan proses shutdown dalam dua tahap:

Penangguhan penulisan

Broker menghentikan pengiriman operasi tulis baru ke node penyimpanan target sebelum restart dimulai. Pesan yang telah dikirim oleh produsen dipastikan sepenuhnya disimpan sebelum node tersebut offline. Hal ini menjamin tidak ada kehilangan pesan selama maintenance terencana karena tidak ada data baru yang dikirim ke node yang akan segera dimatikan.

Pengosongan koneksi melalui GOAWAY

Broker mengirimkan frame GOAWAY (sebagaimana didefinisikan dalam spesifikasi HTTP/2) ke setiap client yang terhubung ke node target. Saat menerima sinyal ini, client akan:

  1. Menyelesaikan semua permintaan yang sedang berlangsung pada koneksi yang ada.

  2. Membuka koneksi baru ke node lain yang tersedia.

Karena client menerima notifikasi terlebih dahulu alih-alih diputus secara tiba-tiba, permintaan yang sedang berjalan dapat diselesaikan secara normal tanpa kehilangan pekerjaan.

Penanganan GOAWAY telah dibangun ke dalam SDK client ApsaraMQ for RocketMQ. Jika versi SDK Anda memenuhi persyaratan minimum yang tercantum di bawah, proses reconnect terjadi secara otomatis tanpa perubahan kode di tingkat aplikasi.

Dampak pada produsen dan konsumen

RolePerilaku selama graceful shutdown
ProducerSemua pesan yang telah dikirim diproses dengan sukses. Fase penangguhan penulisan menjamin bahwa setiap pesan disimpan sebelum node offline.
ConsumerSebagian besar pesan dikonsumsi tanpa gangguan. Dalam kasus langka, sejumlah kecil pesan pada node yang sedang direstart mungkin dikirim ulang karena komitmen offset konsumen gagal selama periode transisi singkat tersebut.

Persyaratan versi SDK

Graceful shutdown memerlukan dukungan SDK client terhadap frame GOAWAY. Pastikan versi SDK Anda memenuhi atau melebihi versi minimum berikut.

BahasaVersi minimumReferensi
Java (protokol gRPC)5.0.7SDK for Java
Java (protokol Remoting)5.3.1SDK for Java
Go5.1.0-rc.1SDK for Go
Python5.0.4SDK for Python
C++5.0.2SDK for C++
C#5.1.0SDK for C#
Penting

Jika versi SDK Anda lebih lama dari versi minimum yang tercantum di atas, client tidak dapat memproses frame GOAWAY. Koneksi dari SDK versi lama akan diputus secara tiba-tiba saat restart node, yang dapat menyebabkan error sementara atau pengiriman ulang pesan.

Catatan penggunaan

  • Tidak diperlukan konfigurasi di sisi client. Graceful shutdown adalah fitur sisi server. Satu-satunya tindakan yang diperlukan adalah memperbarui ke versi SDK yang didukung.

  • Rancang konsumen agar bersifat idempoten. Karena komitmen offset konsumen mungkin gagal selama periode transisi singkat, sejumlah kecil pesan dapat dikirim ulang. Pastikan logika konsumen Anda dapat memproses pesan yang sama lebih dari sekali secara aman.

  • Pantau versi SDK secara proaktif. Saat menambahkan layanan baru atau memperbarui dependensi, pastikan SDK client RocketMQ tetap memenuhi persyaratan versi minimum untuk mempertahankan dukungan graceful shutdown.