Exclusive #

Dalam RabbitMQ, sebagian besar queue dirancang untuk dipakai bersama oleh banyak producer dan consumer.

Namun ada jenis queue yang bersifat lebih privat dan sementara: exclusive queue.

Exclusive queue memiliki perilaku yang sangat spesifik:

  • Terikat pada satu connection
  • Tidak bisa diakses connection lain
  • Biasanya bersifat sementara

Artikel ini membahas exclusive queue secara mendalam dalam konteks desain sistem RabbitMQ.

“Tidak semua antrian dibuat untuk bertahan lama — sebagian hanya ada selama percakapan itu berlangsung.”

Apa Itu Exclusive Queue? #

Exclusive queue adalah queue yang:

  • Hanya dapat digunakan oleh connection yang membuatnya
  • Akan dihapus otomatis ketika connection tersebut ditutup

Queue ini bersifat “milik pribadi”.

Jika connection lain mencoba mengaksesnya, RabbitMQ akan menolak.


Karakteristik Utama Exclusive Queue #

Terikat pada Satu Connection #

Queue dibuat dengan flag:

exclusive = true

Artinya:

  • Hanya connection tersebut yang dapat consume
  • Tidak bisa di-share

Otomatis Dihapus Saat Connection Ditutup #

Jika:

  • Connection terputus
  • Service crash
  • Aplikasi berhenti

Maka queue akan otomatis dihapus oleh broker.

Tidak perlu cleanup manual.


Biasanya Non-Durable #

Exclusive queue hampir selalu digunakan sebagai:

  • Non-durable
  • Temporary queue

Menggabungkan durable + exclusive jarang memiliki use case nyata.


Use Case Umum Exclusive Queue #

RPC Pattern (Request-Reply) #

Dalam pola RPC berbasis RabbitMQ:

  1. Client mengirim request ke service
  2. Client membuat queue khusus untuk menerima response
  3. Queue tersebut bersifat exclusive dan sementara

1. Diagram RPC dengan Exclusive Queue #

Client
   |
   | request
   v
 Service Queue
   |
   v
 Service
   |
   | reply_to = exclusive_queue
   v
 Exclusive Queue (Client)

Queue response hanya relevan selama request berlangsung.


Temporary Subscriber #

Dalam beberapa kasus:

  • Service hanya ingin subscribe sementara
  • Misalnya untuk debugging atau monitoring

Exclusive queue dapat digunakan untuk subscription sementara.


Exclusive vs Auto-Delete #

Exclusive dan auto-delete sering disalahartikan.

AspekExclusiveAuto-Delete
Terikat ke connectionYaTidak
Dihapus saat tidak ada consumerTidak selaluYa
Biasanya sementaraYaBisa iya atau tidak

Exclusive lebih ketat karena terikat pada connection tertentu.


Risiko dan Konsekuensi #

Connection Drop = Queue Hilang #

Jika connection terputus karena:

  • Network glitch
  • Restart service

Queue langsung dihapus.

Jika digunakan untuk data penting, ini berbahaya.


Tidak Cocok untuk Shared Workload #

Exclusive queue tidak bisa digunakan untuk:

  • Multiple consumer
  • Shared task processing

Tidak Cocok untuk Long-Lived Business Queue #

Queue transaksi penting tidak boleh exclusive.


Exclusive Queue dalam Cluster #

Dalam cluster RabbitMQ:

  • Exclusive queue tetap hanya berada di node tempat dibuat
  • Tidak direplikasi

Karena sifatnya sementara, exclusive queue tidak dirancang untuk high availability.


Best Practice Penggunaan #

Gunakan untuk RPC Response Queue #

Pola paling umum dan aman.


Jangan Gunakan untuk Event Domain Utama #

Event bisnis sebaiknya menggunakan queue durable dan non-exclusive.


Pastikan Client Siap Membuat Ulang Queue #

Jika connection terputus, client harus mampu membuat ulang queue dan binding.


Ringkasan #

KarakteristikExclusive Queue
ScopeSatu connection
LifecycleMengikuti connection
DurabilityBiasanya non-durable
Cocok untukRPC, temporary workload
Tidak cocok untukBusiness-critical queue

Penutup #

Exclusive queue adalah alat khusus untuk kebutuhan sementara dan privat.

Ia sangat berguna dalam pola seperti RPC.

Namun ia bukan solusi untuk workload utama atau transaksi bisnis.

Dalam desain RabbitMQ yang matang, exclusive queue digunakan dengan sadar — bukan karena kebetulan konfigurasi.

Karena queue yang terikat pada satu koneksi seharusnya hanya hidup selama percakapan itu sendiri berlangsung.

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