RabbitMQ adalah broker pesan tujuan umum yang solid yang mendukung beberapa protokol seperti AMQP, MQTT, STOMP, dll. Ia dapat menangani throughput tinggi. Kasus penggunaan umum untuk RabbitMQ adalah untuk menangani pekerjaan latar belakang atau tugas jangka panjang, seperti pemindaian file , penskalaan gambar atau konversi PDF. RabbitMQ juga digunakan di antara layanan microser, di mana ia berfungsi sebagai sarana untuk berkomunikasi antar aplikasi, menghindari kemacetan yang lewat pesan.
Kafka adalah bus pesan yang dioptimalkan untuk aliran data ulangan dan pemutaran ulang. Gunakan Kafka ketika Anda harus memindahkan sejumlah besar data, memproses data secara real-time atau menganalisis data selama periode waktu tertentu. Dengan kata lain, di mana data perlu dikumpulkan, disimpan, dan ditangani. Contohnya adalah ketika Anda ingin melacak aktivitas pengguna di toko web dan menghasilkan item yang disarankan untuk dibeli. Contoh lain adalah analisis data untuk pelacakan, konsumsi, pencatatan, atau keamanan.
Kafka dapat dilihat sebagai pialang pesan yang tahan lama di mana aplikasi dapat memproses dan memproses ulang data yang dialirkan pada disk. Kafka memiliki pendekatan routing yang sangat sederhana. RabbitMQ memiliki opsi yang lebih baik jika Anda perlu merutekan pesan Anda dengan cara yang rumit ke konsumen Anda. Gunakan Kafka jika Anda perlu mendukung konsumen batch yang bisa offline atau konsumen yang menginginkan pesan pada latensi rendah.
Untuk memahami cara membaca data dari Kafka, pertama-tama kita perlu memahami konsumen dan kelompok konsumennya. Partisi memungkinkan Anda untuk memparalelkan topik dengan memecah data di beberapa node. Setiap catatan dalam partisi ditugaskan dan diidentifikasi oleh offset uniknya. Offset ini menunjuk ke catatan dalam sebuah partisi. Dalam versi terbaru Kafka, Kafka mempertahankan offset numerik untuk setiap catatan dalam sebuah partisi. Seorang konsumen di Kafka dapat secara otomatis melakukan offset secara berkala, atau dapat memilih untuk mengontrol posisi yang dikomit ini secara manual. RabbitMQ akan menjaga semua negara bagian tentang pesan yang dikonsumsi / diakui / tidak diakui. Saya menemukan Kafka lebih kompleks untuk dipahami daripada kasus RabbitMQ, di mana pesan hanya dihapus dari antrian setelah diterima.
Antrian RabbitMQ paling cepat ketika mereka kosong, sementara Kafka menyimpan sejumlah besar data dengan sangat sedikit overhead - Kafka dirancang untuk menampung dan mendistribusikan pesan dalam volume besar. (Jika Anda berencana memiliki antrian yang sangat panjang di RabbitMQ Anda bisa melihat antrian malas .)
Kafka dibangun dari bawah ke atas dengan penskalaan horizontal (skala dengan menambahkan lebih banyak mesin) dalam pikiran, sementara RabbitMQ sebagian besar dirancang untuk penskalaan vertikal (skala dengan menambahkan lebih banyak daya).
RabbitMQ memiliki antarmuka yang ramah pengguna yang terintegrasi yang memungkinkan Anda memantau dan menangani server RabbitMQ Anda dari peramban web. Antara lain, antrian, koneksi, saluran, pertukaran, pengguna dan izin pengguna dapat ditangani - dibuat, dihapus dan didaftar di browser dan Anda dapat memonitor tingkat pesan dan mengirim / menerima pesan secara manual. Kafka memiliki sejumlah alat open-source, dan juga beberapa iklan komersial , menawarkan fungsi administrasi dan pemantauan. Saya akan mengatakan bahwa lebih mudah / lebih cepat untuk mendapatkan pemahaman yang baik tentang RabbitMQ.
Lebih banyak bacaan dan beberapa data perbandingan dapat ditemukan di sini: https://www.cloudamqp.com/blog/2019-12-12-when-to-use-rabbitmq-or-apache-kafka.html
Juga merekomendasikan makalah industri: "Kafka versus RabbitMQ: Studi perbandingan dua referensi industri menerbitkan / berlangganan implementasi": http://dl.acm.org/citation.cfm?id=3093908
Saya bekerja di perusahaan yang menyediakan Apache Kafka dan RabbitMQ sebagai Layanan.