Dernière modification : Dec 08 , 2024
Introduction au messaging

Introduction au messaging avec Quarkus

Introduction au messaging avec Quarkus

Objectifs

Objectifs de cette présentation

  • Comprendre la notion de messaging
  • Présentation rapide de RabbitMQ et Kafka
  • Présenter les extensions de RabbitMQ et Kafka pour Quarkus
  • Présentation de Quarkus streams

Comprendre la notion de messaging

Le messaging est un modèle de communication asynchrone

Il permet aux applications de communiquer entre elles en envoyant et en recevant des messages.

Il existe différents types de messaging, notamment :

  • Point-to-point: Un message est envoyé d'un producteur à un seul consommateur.
  • Publish-subscribe: Un message est envoyé à tous les abonnés d'un sujet.
  • File-based: Les messages sont stockés dans des fichiers et lus par les consommateurs.

Présentation rapide de RabbitMQ et Kafka

RabbitMQ

RabbitMQ est un courtier de messages open source qui implémente le protocole AMQP. Il est populaire pour sa fiabilité, sa flexibilité et sa facilité d'utilisation.

Kafka

Kafka est un système de messagerie distribué open source qui est conçu pour gérer de grands volumes de données en temps réel. Il est populaire pour sa haute performance, sa scalabilité et sa durabilité.

Architecture de Kafka

Architecture de Kafka

Kafka est composé de plusieurs composants principaux :

  • Producteurs: Ils publient des messages dans un ou plusieurs sujets Kafka.
  • Consommateurs: Ils lisent des messages de sujets Kafka.
  • Courtiers: Ce sont les serveurs qui stockent les données et les servent aux consommateurs.
  • Cluster Kafka: Un ensemble de courtiers Kafka.
  • Zookeeper: Utilisé pour la gestion et la coordination du cluster Kafka.

Chaque message dans Kafka est un couple clé-valeur, et est stocké dans des topics. Les topics sont partitionnés et répliqués pour garantir la haute disponibilité et la scalabilité.

Architecture de Kafka

Comment fonctionne Kafka ?

Comment fonctionne Kafka ?

Kafka utilise un modèle de publication-abonnement avec des topics :

  1. Producteurs: Envoient des messages à des topics spécifiques.
  2. Topics: Catégorisent les messages. Chaque topic peut avoir plusieurs partitions.
  3. Partitions: Divisent les topics pour permettre la parallélisation.
  4. Consommateurs: Lisent les messages des partitions de topics.

Chaque message a un décalage (offset) unique dans la partition. Les consommateurs utilisent ces offsets pour suivre les messages lus.

Exemple de code Kafka avec Quarkus

Exemple de code Kafka avec Quarkus

Voici un exemple simple de producteur Kafka avec Quarkus :

import org.eclipse.microprofile.reactive.messaging.Channel;
import org.eclipse.microprofile.reactive.messaging.Emitter;
import javax.inject.Inject;
import javax.ws.rs.POST;
import javax.ws.rs.Path;

@Path("/kafka")
public class KafkaResource {

    @Inject
    @Channel("my-topic")
    Emitter<String> emitter;

    @POST
    public void sendMessage(String message) {
        emitter.send(message);
    }
}

Et voici un consommateur Kafka :

import org.eclipse.microprofile.reactive.messaging.Incoming;
import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class KafkaConsumer {

    @Incoming("my-topic")
    public void consume(String message) {
        System.out.println("Message reçu: " + message);
    }
}

Présenter les extensions de RabbitMQ et Kafka pour Quarkus

Extensions Quarkus pour RabbitMQ et Kafka

Quarkus fournit des extensions pour RabbitMQ et Kafka qui facilitent l'intégration de ces courtiers de messages dans vos applications. Ces extensions fournissent des API simples et intuitives pour envoyer et recevoir des messages.

Présentation de Quarkus streams

Quarkus streams

Quarkus streams est une bibliothèque qui permet de traiter les flux de données en temps réel. Elle peut être utilisée pour traiter les messages reçus d'un courtier de messages.

Conclusion

Conclusion

Le messaging est un outil puissant qui peut être utilisé pour améliorer la communication entre les applications. Quarkus fournit des extensions pour RabbitMQ et Kafka qui facilitent l'intégration de ces courtiers de messages dans vos applications. Quarkus streams peut être utilisé pour traiter les flux de données en temps réel.

Introduction au messaging avec Quarkus

Created by Sylvain Leroy


Documentation et resources

Dans cette leçon, nous allons aborder comment écrire une application qui recoit et envoie des messages à un bus d'événement afin de recevoir les notifications venant d'autres applications.


Objectifs

  • Comprendre la notion de messaging
  • Présentation rapide de RabbitMQ et Kafka
  • Présenter les extensions de RabbitMQ et Kafka pour Quarkus
  • Présentation de Quarkus streams