Durable vs Transient #

Salah satu kesalahpahaman paling umum dalam RabbitMQ adalah mengira bahwa semua queue dan message otomatis aman dari crash.

Padahal, dalam RabbitMQ ada perbedaan fundamental antara:

  • Durable queue
  • Non-durable (transient) queue

Dan perbedaan ini berdampak langsung pada:

  • Ketahanan data
  • Recovery setelah restart
  • Risiko kehilangan message

Artikel ini membahas durable vs transient queue secara mendalam dalam konteks production system.

“Banyak sistem merasa aman karena pesan berhasil dikirim — sampai broker restart dan semuanya hilang.”

Apa Itu Durable Queue? #

Durable queue adalah queue yang definisinya disimpan ke disk.

Artinya:

  • Jika broker restart
  • Queue tetap ada setelah restart

Namun penting dipahami:

Durable queue tidak otomatis membuat message di dalamnya durable.

Durability queue dan durability message adalah dua hal berbeda.


Apa Itu Non-Durable (Transient) Queue? #

Non-durable queue adalah queue yang hanya hidup selama broker berjalan.

Jika broker restart:

  • Queue hilang
  • Semua message di dalamnya hilang

Transient queue cocok untuk:

  • Temporary workload
  • Development
  • Response queue pada RPC pattern

Tidak cocok untuk sistem mission-critical.


Hubungan Durable Queue dan Persistent Message #

Untuk benar-benar aman dari crash, dua hal harus benar:

  1. Queue harus durable
  2. Message harus dikirim dengan delivery_mode = 2 (persistent)

Jika salah satu tidak terpenuhi:

  • Message bisa hilang saat crash

1. Diagram Kombinasi Durability #

Queue Durable   + Message Persistent   → Aman (recovered)
Queue Durable   + Message Transient    → Message bisa hilang
Queue Transient + Message Persistent   → Queue hilang
Queue Transient + Message Transient    → Hilang total

Keduanya harus selaras.


Bagaimana RabbitMQ Menyimpan Durable Queue? #

Ketika queue durable dibuat:

  • Definisi queue disimpan dalam metadata disk
  • Saat restart, broker memuat kembali definisi tersebut

Jika message juga persistent:

  • Message disinkronisasi ke disk (bergantung konfigurasi)
  • Akan direcover saat broker hidup kembali

Namun proses disk sync memiliki konsekuensi performa.


Tradeoff Performa vs Durability #

Durability tidak gratis.

Menulis ke disk berarti:

  • Disk I/O meningkat
  • Latency publish bertambah
  • Throughput bisa menurun

Transient queue dan message lebih cepat karena:

  • Tidak perlu fsync ke disk

Namun risiko kehilangan data meningkat.

Desain harus mempertimbangkan kebutuhan bisnis.


Crash Scenario Analysis #

Mari kita lihat beberapa skenario.

Skenario 1: Broker Restart Normal #

Jika:

  • Queue durable
  • Message persistent

Maka:

  • Queue kembali tersedia
  • Message dipulihkan

Skenario 2: Broker Crash Mendadak #

Jika:

  • Message belum tersinkronisasi ke disk

Ada kemungkinan kehilangan message meskipun persistent.

Publisher confirm membantu mengurangi risiko ini.


Skenario 3: Node Mati dalam Cluster #

Jika menggunakan classic queue tanpa replikasi:

  • Queue di node tersebut tidak tersedia

Jika menggunakan quorum queue:

  • Majority tetap melayani
  • Data tetap tersedia

Durability berbeda dengan high availability.


Kapan Menggunakan Durable Queue? #

Gunakan durable queue jika:

  • Data penting
  • Tidak boleh kehilangan message
  • Sistem production
  • SLA tinggi

Sebagian besar production system sebaiknya menggunakan durable queue.


Kapan Menggunakan Transient Queue? #

Gunakan transient queue jika:

  • Data sementara
  • RPC response queue
  • Cache invalidation non-critical
  • Development environment

Jangan gunakan untuk transaksi bisnis penting.


Kesalahan Umum #

Mengira Durable Queue Saja Cukup #

Tanpa persistent message, data tetap bisa hilang.


Mengaktifkan Durability Tanpa Memikirkan Disk #

Disk I/O bisa menjadi bottleneck.

Monitoring disk latency sangat penting.


Tidak Menggunakan Publisher Confirm #

Durable + persistent tetap bisa kehilangan message jika publish belum dikonfirmasi.


Durable Queue vs Quorum Queue #

Durable queue tidak sama dengan quorum queue.

  • Durable → tahan restart node
  • Quorum → tahan kegagalan sebagian node (cluster)

Durable adalah tentang persistence. Quorum adalah tentang replication dan consensus.


Ringkasan #

AspekDurable QueueTransient Queue
Bertahan restartYaTidak
Simpan metadata ke diskYaTidak
Cocok untuk productionYaTidak
PerformaLebih lambatLebih cepat

Penutup #

Durability adalah keputusan arsitektural, bukan sekadar flag konfigurasi.

Memilih antara durable dan transient queue berarti memilih antara:

  • Kecepatan
  • Dan ketahanan data

Dalam sistem bisnis yang serius, kehilangan satu message bisa berarti kehilangan uang, data, atau kepercayaan.

Karena itu memahami durable vs transient queue bukan hanya soal teknis — tetapi soal tanggung jawab desain sistem.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact