Chapitre Messagerie avec Quarkus
Introduction au messaging
Cette leçon présente ce qu'est le messaging et les possibilités d'intégrer Quarkus avec RabbitMQ et Kafka.

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 :
- Producteurs: Envoient des messages à des topics spécifiques.
- Topics: Catégorisent les messages. Chaque topic peut avoir plusieurs partitions.
- Partitions: Divisent les topics pour permettre la parallélisation.
- 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.

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