Recraftory

Pengenalan Message Queue

Memahami konsep antrian pesan dalam arsitektur aplikasi

Apa itu Message Queue

  • Sistem yang menyimpan pesan sementara sampai bisa diproses
  • Memungkinkan aplikasi berkomunikasi secara asynchronous
  • Producer mengirim pesan, consumer memproses pesan

Mengapa Menggunakan Message Queue

  • Decoupling: producer dan consumer tidak perlu aktif bersamaan
  • Buffering: menangani lonjakan traffic tanpa overload server
  • Scalability: consumer bisa ditambah untuk memproses lebih banyak pesan
  • Reliability: pesan tidak hilang meski consumer sementara mati

Komponen Message Queue

Producer (Publisher)

  • Aplikasi yang mengirim pesan ke queue
  • Tidak perlu menunggu pesan diproses
  • Bisa langsung merespons user setelah pesan dikirim

Queue (Broker)

  • Tempat penyimpanan pesan sementara
  • Menjaga urutan pesan dan mengirim ke consumer
  • Contoh: RabbitMQ, Kafka, Redis Pub/Sub, AWS SQS

Consumer (Subscriber)

  • Aplikasi yang membaca dan memproses pesan dari queue
  • Bisa ada banyak consumer untuk satu queue
  • Pesan dihapus dari queue setelah berhasil diproses

Jenis Message Queue

Point-to-Point

  • Satu pesan hanya diproses oleh satu consumer
  • Setelah diproses, pesan dihapus dari queue
  • Cocok untuk task yang hanya perlu dilakukan sekali

Publish-Subscribe (Pub/Sub)

  • Satu pesan bisa diterima oleh banyak consumer
  • Pesan tidak dihapus sampai semua subscriber menerima
  • Cocok untuk notifikasi dan event broadcasting

Perbedaan Message Queue dan API Synchronous

API Synchronous

  • Client menunggu server selesai memproses
  • Server harus selesai sebelum bisa merespons request lain
  • User menunggu di layar sampai proses selesai

Message Queue

  • Client mengirim pesan dan tidak perlu menunggu
  • Server memproses di background
  • User bisa melanjutkan aktivitas lain

Message Queue Populer

  • RabbitMQ: open source, protokol AMQP, fitur lengkap
  • Apache Kafka: high throughput, distributed, durable
  • Redis Pub/Sub: ringan, in-memory, cepat
  • AWS SQS: managed service dari Amazon
  • Google Cloud Pub/Sub: managed service dari Google

Praktik Terbaik

  • Pesan harus idempoten, aman diproses ulang
  • Beri timeout pada pesan yang tidak diproses lama
  • Monitor queue depth untuk deteksi bottleneck
  • Retry dengan exponential backoff saat consumer gagal
  • Dead letter queue untuk pesan yang gagal berulang kali