RabbitMQ VS Kafka: Pengenalan Konsep umum, Cara Kerja, dan Contoh Studi Kasus Sederhana - Perwira Learning Center


1. Latar Belakang

    Di perkembangan zaman yang cepat, sebuah sistem tidak hanya dituntut untuk berjalan dengan benar, tetapi juga harus mampu menangani banyak proses secara efisien. Proses seperti pengolahan data, pengiriman notifikasi, dan pencatatan aktivitas pengguna sering kali membutuhkan waktu yang tidak singkat. Jika seluruh proses tersebut dijalankan secara langsung dalam satu alur, aplikasi dapat mengalami keterlambatan dan menurunkan kualitas layanan.
    Message queue hadir sebagai solusi untuk permasalahan tersebut dengan memungkinkan pengiriman pesan antar proses secara terpisah. Dua teknologi message queue yang banyak digunakan adalah RabbitMQ dan Apache Kafka. Meskipun memiliki tujuan yang sama, keduanya memiliki cara kerja dan fokus penggunaan yang berbeda.
    Oleh karena itu, artikel ini dibuat untuk memberikan pengenalan konsep umum message queue dengan membahas RabbitMQ dan Kafka, mulai dari pengenalan konsep hingga contoh studi kasus sederhana.

2. Alat dan Bahan

Berikut alat dan bahan untuk mengikuti praktik studi kasus sederhana dari RabbitMQ dan Kafka, yaitu :

2.1. Perangkat Lunak

- Sistem Operasi Linux Ubuntu

- Terminal 

- Visual Studio Code

- RabbitMQ Server

- Apache Kafka

2.2. Perangkat Keras

- Laptop / PC

3. Pembahasan

3.1 Message Queue

    Message Queue (antrian pesan) adalah teknik komunikasi antarlayanan/aplikasi secara asynchronous (tidak langsung) yang memungkinkan satu aplikasi mengirim data berbentuk pesan ke aplikasi lain tanpa harus menunggu respon secara instan.

3.2 Konsep Umum RabbitMQ dan Kafka

    RabbitMQ adalah salah satu aplikasi perantara atau Message Broker yang digunakan untuk mengelola komunikasi dan pengiriman data antar aplikasi atau sistem dengan konsep antrean pesan (queue). Konsep ini umumnya digunakan untuk menangani tugas-tugas yang berjalan di latar belakang seperti pengiriman email, notifikasi, dan pemrosesan data sederhana. Dengan menjadi perantara yang menampung tugas-tugas masuk, RabbitMQ memastikan aplikasi tetap responsif meskipun banyak permintaan datang secara bersamaan.
    Berbeda dengan RabbitMQ yang fokus menyelesaikan tugas sampai tuntas, Kafka dirancang untuk menyimpan setiap kejadian layaknya log yang dapat dibaca berkali-kali. Kafka sering juga dikategorikan sebagai message broker, namun secara konsep Kafka lebih dikenal sebagai platform event streaming yang digunakan untuk mengelola aliran data secara real-time. 

3.3 Cara Kerja Secara Garis Besar    

a. RabbitMQ
    Pada RabbitMQ, alur kerjanya dimulai dari producer atau si pengirim pesan. Nantinya, producer akan mengirim suatu pesan ke consumer atau si penerima pesan lewat proses message broker yang di dalamnya terdapat exchange dan queue. Nah, kenapa pesan dari producer tidak di kirim langsung saja ke queue tanpa melewati exchange? Justru exchange itu penting, karena exchange berperan seperti penyortiran yang menentukan tujuan akhir pesan. Sedangkan queue itu tempat pesan menunggu di proses. Terdapat 2 jenis exchange yang paling umum, yaitu:
    1. Direct Exchange : Pesan ke tujuan spesifik (contoh: kirim email)
    2. Fanout Exchange : Pesan ke semua tujuan (contoh: simpan log aktivitas)


b. Kafka
    Pada Kafka, alur bekerjanya juga dimulai dari producer, namun datanya dikirim ke topic, bukan ke exchange dan queue seperti RabbitMQ. Topic ini berfungsi sebagai tempat penampungan data atau event yang dikirim oleh producer dan akan disimpan oleh Kafka agar dapat dibaca oleh consumer kapan saja sesuai kebutuhan. 

Berikut analogi sederhananya :

- RabbitMQ
  • RabbitMQ = kantor pos
  • Producer = pengirim surat
  • Exchange = bagian sortir
  • Queue = rak surat
  • Consumer = petugas yang menerima surat dari rak surat dan mengerjakannya
- Kafka
  • Kafka = perpustakaan
  • Producer = penulis / penyumbang buku
  • Topic = rak buku
  • Consumer = pembaca / peneliti yang membaca buku

3.4 Contoh Studi Kasus Sederhana

a. Studi Kasus RabbitMQ: "Registrasi akun + kirim email verifikasi"
- Kasus: 
Dalam sebuah aplikasi, saat user mendaftar akun:

  • Data disimpan ke database
  • Sistem mengirim email verifikasi
  • Kalau email dikirim langsung, proses daftar bisa jadi lama dan terasa lemot. 
- Solusi:

  • Pakai RabbitMQ sebagai perantara
- Langkah:
  1. Setelah menginstall semua dependensi RabbitMQ, buka terminal dan mulai server RabbitMQ nya
  2. Cek status RabbitMQ dan klik Q untuk exit dari menu status
  3. Restart server RabbitMQ dulu dan masukkan passwordmu
  4. Pastikan node.js sudah terinstall dan buatlah directory baru bernama "rabbitmq-node"
  5. Cek init

  6. Install library RabbitMQ
  7. Buat file producer.js (Bisa dengan "nano" maupun "code .")
  8. Isi producer.js dengan kode berikut
  9. Klik ctrl + o untuk menyimpan dan ctrl + x untuk keluar
  10. Buat file consumer.js
  11. Isi consumer.js dengan kode berikut
  12. Klik ctrl + o dan ctrl + x
  13. Sekarang, siapkan 2 terminal lalu jalankan producer.js dan consumer.js di masing-masing terminal
  14. Lihat outputnya, ini adalah gambaran dari proses pengiriman pesan producer ke consumer melalui RabbitMQ

b. Studi Kasus Kafka: "Mencatat aktivitas user (event log)"

- Kasus: 

Dalam sebuah aplikasi,  setiap aktivitas user seperti:

  • Login
  • Logout
  • Klik tombol tertentu
  • Update profil
Perlu dicatat sebagai data log untuk keperluan monitoring event yang dilakukan user. Jika diproses satu persatu secara real-time, sistem dapat menjadi berat, performa melambat, dan data sulit dianalisis ulang.

- Solusi:

  • Menggunakan Kafka untuk mencatat dan mengelola aliran data yang masuk (Event Streaming)
- Langkah:
a. Persiapan
  1. Install Kafka dari link berikut : https://kafka.apache.org/community/downloads/
b. Penyelesaian Kasus
  1. Masuk ke directory tempat kamu mengekstrak Kafka
  2. Buat directory baru dan cek init
  3. Install library Kafka 
  4. Kalau tadi kita pakai nano, sekarang kita coba pakai Visual Studio Code dengan ketik "code ."

  5. Buat file producer.js
  6. Isi producer.js dengan kode berikut
  7. Buat file consumer.js dan isi dengan kode berikut
  8. Jalankan producer.js dan consumer.js pada 2 terminal yang berbeda
    Dan itulah gambaran dari proses pengiriman pesan dari producer ke consumer untuk mencatat event streaming yang ada pada suatu aplikasi. Kesimpulannya, RabbitMQ dan Kafka adalah dua konsep yang berbeda tetapi memiliki tujuan yang sama. Masing-masing dari keduanya memiliki fungsi untuk membantu mempercepat proses pengiriman, namun dengan misi yang berbeda. Kafka bekerja dengan konsep log streaming terdistribusi, sedangkan RabbitMQ bekerja dengan konsep message broker berbasis queue. Keduanya dapat menjadi solusi yang tepat tergantung pada kebutuhan sistem yang dibangun.

    Sekian pembahasan RabbitMQ dan Kafka pada hari ini, semoga kedepannya dapat bermanfaat bagi para pembaca.

4. Daftar Pustaka


Amazon Web Services. (2026). The difference between RabbitMQ and Kafka. Diakses dari: https://aws.amazon.com/id/compare/the-difference-between-rabbitmq-and-kafka

Medium. (2023). Simulasi Message Queue dengan RabbitMQ. Diakses dari: https://riansyahtohamba.medium.com/simulasi-message-queue-dengan-rabbitmq-1bc58af409c7









Post a Comment

0 Comments