RabbitMQ est un courtier de messages solide et polyvalent qui prend en charge plusieurs protocoles tels que AMQP, MQTT, STOMP, etc. Il peut gérer un débit élevé. Un cas d'utilisation courant pour RabbitMQ est de gérer des tâches d'arrière-plan ou des tâches de longue durée, telles que la numérisation de fichiers , la mise à l'échelle d'images ou la conversion PDF. RabbitMQ est également utilisé entre les microservices, où il sert de moyen de communication entre les applications, évitant les goulots d'étranglement lors de la transmission des messages.
Kafka est un bus de messages optimisé pour les flux de données à forte pénétration et la relecture. Utilisez Kafka lorsque vous avez besoin de déplacer une grande quantité de données, de traiter des données en temps réel ou d'analyser des données sur une période de temps. En d'autres termes, où les données doivent être collectées, stockées et traitées. Un exemple est lorsque vous souhaitez suivre l'activité des utilisateurs sur une boutique en ligne et générer des articles suggérés à acheter. Un autre exemple est l'analyse des données pour le suivi, l'ingestion, la journalisation ou la sécurité.
Kafka peut être considéré comme un courtier de messages durable où les applications peuvent traiter et retraiter les données diffusées sur disque. Kafka a une approche de routage très simple. RabbitMQ propose de meilleures options si vous devez acheminer vos messages de manière complexe vers vos consommateurs. Utilisez Kafka si vous devez prendre en charge des consommateurs par lots qui pourraient être hors ligne ou des consommateurs qui souhaitent des messages à faible latence.
Afin de comprendre comment lire les données de Kafka, nous devons d'abord comprendre ses consommateurs et ses groupes de consommateurs. Les partitions vous permettent de paralléliser un sujet en répartissant les données sur plusieurs nœuds. Chaque enregistrement d'une partition est attribué et identifié par son décalage unique. Ce décalage pointe vers l'enregistrement dans une partition. Dans la dernière version de Kafka, Kafka conserve un décalage numérique pour chaque enregistrement dans une partition. Un consommateur de Kafka peut soit valider automatiquement des compensations périodiquement, soit choisir de contrôler manuellement cette position validée. RabbitMQ conservera tous les états concernant les messages consommés / reconnus / non acquittés. Je trouve Kafka plus complexe à comprendre que le cas de RabbitMQ, où le message est simplement supprimé de la file d'attente une fois qu'il a été acquitté.
Les files d'attente de RabbitMQ sont plus rapides lorsqu'elles sont vides, tandis que Kafka conserve de grandes quantités de données avec très peu de frais généraux - Kafka est conçu pour contenir et distribuer de gros volumes de messages. (Si vous prévoyez d'avoir de très longues files d'attente dans RabbitMQ, vous pouvez consulter les files d'attente paresseuses .)
Kafka est construit à partir de zéro avec une mise à l'échelle horizontale (mise à l'échelle en ajoutant plus de machines), tandis que RabbitMQ est principalement conçu pour une mise à l'échelle verticale (mise à l'échelle en ajoutant plus de puissance).
RabbitMQ possède une interface conviviale intégrée qui vous permet de surveiller et de gérer votre serveur RabbitMQ à partir d'un navigateur Web. Entre autres choses, les files d'attente, les connexions, les canaux, les échanges, les utilisateurs et les autorisations des utilisateurs peuvent être gérés - créés, supprimés et répertoriés dans le navigateur et vous pouvez surveiller les taux de messages et envoyer / recevoir des messages manuellement. Kafka dispose d'un certain nombre d' outils open-source, ainsi que d'une partie commerciale une fois , offrant les fonctionnalités d'administration et de surveillance. Je dirais que c'est plus facile / plus rapide d'avoir une bonne compréhension de RabbitMQ.
Plus de lecture et quelques données de comparaison peuvent être trouvées ici: https://www.cloudamqp.com/blog/2019-12-12-when-to-use-rabbitmq-or-apache-kafka.html
Recommandant également le document de l'industrie: "Kafka versus RabbitMQ: une étude comparative de deux implémentations de publication / abonnement de référence de l'industrie": http://dl.acm.org/citation.cfm?id=3093908
Je travaille dans une entreprise fournissant à la fois Apache Kafka et RabbitMQ as a Service.