Bus d’événements et courtiers de messages
Utilisez des courtiers de messages et des bus d’événements pour faciliter une communication asynchrone fiable dans les sagas par chorégraphie.
Bus d’événements et courtiers de messages est une leçon Microservices Communication Patterns (Saga, Circuit Breaker) gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Microservices Communication Patterns (Saga, Circuit Breaker), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Microservices Communication Patterns (Saga, Circuit Breaker) comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Reliable Choreography Sagas
In a choreography saga, services communicate by exchanging events. For this to work reliably in a distributed system, we need robust communication mechanisms.
Imagine an order being created, then needing payment, and finally shipping. Each step is an event triggering the next service.
- Order Service publishes
OrderCreated - Payment Service subscribes to
OrderCreated, publishesPaymentProcessed - Shipping Service subscribes to
PaymentProcessed, publishesShipmentScheduled
What's an Event Bus?
An Event Bus is a pattern that enables different parts of an application (or different services) to communicate by sending and receiving events without knowing about each other directly.
Think of it as a central hub where events are broadcast. Any interested party can 'listen' for specific events.
It decouples services, meaning they don't need to know who will process their events, only that an event occurred.
Event Bus in Action
Consider an internal event bus within a single application:
- A user clicks a 'Save' button.
- The UI component publishes a
UserSavedevent to the event bus. - A logging module, a notification module, and a data synchronization module might all subscribe to
UserSaved.
They all react to the event without the UI knowing about them. This is simple and effective for in-process communication.
Introducing Message Brokers
While an event bus is great for in-process communication, distributed microservices need more. This is where Message Brokers come in.
A message broker is a dedicated service (like RabbitMQ, Kafka, or AWS SQS) that acts as an intermediary for messages between different applications or services.
It provides advanced features essential for reliable communication across networks.
Broker Benefits for Sagas
Message brokers offer crucial benefits for choreography sagas:
- Durability: Messages persist even if services are down, preventing data loss.
- Guaranteed Delivery: Ensures messages reach their intended consumers.
- Decoupling: Senders and receivers don't know each other, promoting service independence.
- Load Balancing: Distributes messages efficiently among multiple instances of a consuming service.
- Asynchronous: Services don't wait for responses, improving performance and responsiveness.
Bus vs. Broker: The Difference
While both facilitate event-driven communication, an Event Bus is typically a lightweight, in-memory mechanism within a single application or process.
A Message Broker is a robust, external system designed for inter-process and inter-service communication across a network. It provides features like message queues, topics, persistence, and complex routing.
You can think of a message broker as a powerful, distributed implementation of an event bus concept.
Brokers Enable Choreography
Message brokers are the backbone of choreography sagas. They allow services to:
- Publish Events: A service completes a step and publishes an event to a specific topic (a named channel on the broker).
- Subscribe to Events: Other services interested in that event subscribe to the topic and receive the event to trigger their next step.
This decentralized flow, driven by events through a broker, defines the choreography pattern.
Example: Publishing an Event
Here's a simplified example of how an OrderService might prepare and conceptually "publish" an OrderCreated event using a message broker.
The broker handles the actual sending to subscribers.
public class OrderService {
public static void main(String[] args) {
String orderId = "ORD_456";
String customer = "Alice";
String item = "Widget";
// Imagine this event goes to a message broker
String eventPayload = "{ \"type\": \"OrderCreated\", \"orderId\": \"" + orderId + "\", \"customer\": \"" + customer + "\", \"item\": \"" + item + "\" }";
System.out.println("OrderService prepares event:");
System.out.println(eventPayload);
System.out.println("This event would be sent to a 'order_events' topic on a message broker.");
}
}Example: Subscribing to an Event
Now, let's see how a PaymentService would conceptually "subscribe" to and process the OrderCreated event from the broker.
It listens on the order_events topic.
public class PaymentService {
public static void main(String[] args) {
// Imagine PaymentService receives this event from a message broker
String receivedEvent = "{ \"type\": \"OrderCreated\", \"orderId\": \"ORD_456\", \"customer\": \"Alice\", \"item\": \"Widget\" }";
System.out.println("PaymentService received event:");
System.out.println(receivedEvent);
// Parse and process the event
if (receivedEvent.contains("\"type\": \"OrderCreated\"")) {
System.out.println("Processing payment for order: ORD_456...");
System.out.println("Payment processed successfully!");
} else {
System.out.println("Unknown event type received.");
}
}
}Check Your Understanding
Message brokers are crucial for choreography sagas. Which of the following are key benefits provided by message brokers for reliable asynchronous communication?
Recap: Event Bus & Brokers
In this lesson, we explored how Event Buses and Message Brokers facilitate reliable asynchronous communication, especially for choreography sagas.
- An Event Bus is a pattern for in-process event communication.
- A Message Broker is an external, robust system that implements this pattern for distributed services, offering features like durability and guaranteed delivery.
- They enable services to publish events and subscribe to topics, forming the core of how choreography sagas progress.
Next, we'll look at how to handle compensation when things go wrong in these event-driven flows!
Apprends Microservices Communication Patterns (Saga, Circuit Breaker) avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 12
- Leçons
- 48
Questions Fréquemment Posées
La leçon « Bus d’événements et courtiers de messages » est-elle gratuite ?
Oui — le texte complet de « Bus d’événements et courtiers de messages » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Microservices Communication Patterns (Saga, Circuit Breaker), passe à CoddyKit PRO. Le cours Microservices Communication Patterns (Saga, Circuit Breaker) comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Bus d’événements et courtiers de messages » ?
Utilisez des courtiers de messages et des bus d’événements pour faciliter une communication asynchrone fiable dans les sagas par chorégraphie. Tu pratiques Microservices Communication Patterns (Saga, Circuit Breaker) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Microservices Communication Patterns (Saga, Circuit Breaker) ?
Aucune expérience préalable n'est requise. Microservices Communication Patterns (Saga, Circuit Breaker) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Bus d’événements et courtiers de messages » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Microservices Communication Patterns (Saga, Circuit Breaker) ?
Oui. Chaque leçon Microservices Communication Patterns (Saga, Circuit Breaker) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Conception de sagas pilotées par les événements
- Bus d’événements et courtiers de messages
- Gestion de la compensation par les événements
- Créer des consommateurs d’événements idempotents