Dans le traitement traditionnel des messages, vous appliquez des calculs simples sur les messages - dans la plupart des cas individuellement par message. Dans le traitement de flux, vous appliquez des opérations complexes sur plusieurs flux d'entrée et plusieurs enregistrements (c'est-à-dire des messages) en même temps (comme les agrégations et les jointures).
En outre, le système de messagerie traditionnel ne peut pas remonter dans le temps, c'est-à-dire qu'il supprime automatiquement les messages après leur livraison à tous les consommateurs abonnés. En revanche, Kafka conserve les messages car il utilise un modèle basé sur le tirage (c.-à-d., Les données tirées par les consommateurs de Kafka) pendant une durée configurable. Cela permet aux consommateurs de "rembobiner" et de consommer des messages plusieurs fois - ou si vous ajoutez un nouveau consommateur, il peut lire l'historique complet. Cela rend le traitement de flux possible, car il permet des applications plus complexes. En outre, le traitement de flux ne concerne pas nécessairement le traitement en temps réel - il s'agit de traiter un flux d'entrée infini (contrairement au traitement par lots appliqué aux entrées finies). Kafka propose l'API Kafka Connect et Streams - il s'agit donc d'une plate-forme de traitement de flux et pas seulement d'un système de messagerie/sous-registre (même s'il l'utilise dans son noyau).
Je pense que vous pourriez trouver https://www.quora.com/What-are-the-differences-between-Apache-Kafka-and-RabbitMQ intéressant –