Il existe deux modèles de base pour la transmission des évènements dans une architecture orientée évènements.
Messagerie d'évènements ou publication/abonnement
Dans le modèle de messagerie d'évènements ou de publication/abonnement, les consommateurs d'évènements s'abonnent à une ou plusieurs classes de messages publiés par les producteurs d'évènements. Lorsqu'un producteur d'évènements publie un évènement, le message est envoyé directement à tous les abonnés qui veulent le consommer.
En général, un courtier de messages s'occupe de la transmission des messages d'évènements entre les éditeurs et les abonnés. Le courtier reçoit chaque message d'évènement, le traduit si nécessaire, maintient son ordre par rapport aux autres messages, les met à la disposition des abonnés pour qu'ils les consomment, puis les supprime une fois qu'ils ont été consommés (afin qu'ils ne puissent plus être consommés à nouveau).
Transmission d'événements en continu
Dans le modèle de transmission d'évènements en continu, les producteurs d'évènements publient des flux d'évènements en direction d'un courtier. Les consommateurs d'évènements s'abonnent aux flux, mais au lieu de recevoir et de consommer chaque évènement au fur et à mesure de sa publication, les consommateurs peuvent accéder à chaque flux à tout moment et consommer uniquement les évènements qu'ils souhaitent. La différence essentielle ici est que les évènements sont conservés par le courtier même une fois que les consommateurs les ont reçus.
Une plateforme de diffusion en continu de données, telle que Apache Kafka, gère l'enregistrement et la transmission d'énormes volumes d'évènements à très haut débit (littéralement des milliards d'enregistrements d'évènements par jour, en temps réel, sans retard de performance). Une plateforme de diffusion en flux présente certaines caractéristiques qu'un courtier en messages ne possède pas :
- Persistance des évènements : comme les consommateurs peuvent consommer les évènements à tout moment après leur publication, les enregistrements de flux d'évènements sont persistants ; ils sont conservés pendant une durée configurable, allant de quelques fractions de seconde à une éternité. Cela permet aux applications de flux d'évènements de traiter des données historiques, ainsi que des données en temps réel.
- Traitement d'évènements complexes : comme la messagerie d'évènements, la transmission d'évènements en continu peut être utilisée pour le traitement d'évènements simples, dans lequel chaque évènement publié déclenche la transmission et le traitement par un ou plusieurs consommateurs spécifiques. Mais elle peut également être utilisée pour le traitement d'évènements complexes, dans lequel les consommateurs d'évènements traitent des séries entières d'évènements et exécutent des actions en fonction du résultat.