Eventbus en message brokers
Gebruik message brokers en eventbussen voor betrouwbare asynchrone communicatie in choreography sagas.
Eventbus en message brokers is een gratis Communicatiepatronen voor microservices (Saga, Circuit Breaker)-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Communicatiepatronen voor microservices (Saga, Circuit Breaker). Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Communicatiepatronen voor microservices (Saga, Circuit Breaker) bevat in totaal 4 lessen.
Betrouwbare choreografiesaga's
In een choreografiesaga communiceren services door gebeurtenissen uit te wisselen. Om dit betrouwbaar te laten werken in een gedistribueerd systeem, hebben we robuuste communicatiemechanismen nodig.
Stel je voor dat een bestelling wordt aangemaakt, vervolgens betaling nodig heeft en ten slotte wordt verzonden. Elke stap is een gebeurtenis die de volgende service activeert.
- Order Service publiceert
OrderCreated - Payment Service abonneert zich op
OrderCreateden publiceertPaymentProcessed - Shipping Service abonneert zich op
PaymentProcesseden publiceertShipmentScheduled
Wat is een eventbus?
Een eventbus is een patroon waarmee verschillende onderdelen van een applicatie (of verschillende services) met elkaar kunnen communiceren door gebeurtenissen te verzenden en te ontvangen, zonder dat ze elkaar rechtstreeks kennen.
Je kunt het zien als een centraal knooppunt waar gebeurtenissen worden uitgezonden. Elke geïnteresseerde partij kan naar specifieke gebeurtenissen 'luisteren'.
Het koppelt services los, wat betekent dat ze niet hoeven te weten wie hun gebeurtenissen verwerkt, maar alleen dat er een gebeurtenis heeft plaatsgevonden.
De eventbus in actie
Bekijk een interne eventbus binnen één applicatie:
- Een gebruiker klikt op een knop 'Opslaan'.
- Het UI-onderdeel publiceert een
UserSaved-gebeurtenis naar de eventbus. - Een logregistratiemodule, een meldingenmodule en een gegevenssynchronisatiemodule kunnen zich allemaal abonneren op
UserSaved.
Ze reageren allemaal op de gebeurtenis zonder dat de UI iets van hen hoeft te weten. Dit is eenvoudig en effectief voor communicatie binnen één proces.
Berichtenmakelaars introduceren
Hoewel een eventbus uitstekend geschikt is voor communicatie binnen één proces, hebben gedistribueerde microservices meer nodig. Daar komen berichtenmakelaars om de hoek kijken.
Een berichtenmakelaar is een speciale service (zoals RabbitMQ, Kafka of AWS SQS) die optreedt als tussenpersoon voor berichten tussen verschillende applicaties of services.
Deze biedt geavanceerde functies die essentieel zijn voor betrouwbare communicatie via netwerken.
Voordelen van makelaars voor saga's
Berichtenmakelaars bieden belangrijke voordelen voor choreografiesaga's:
- Duurzaamheid: Berichten blijven bewaard, zelfs als services niet beschikbaar zijn, waardoor gegevensverlies wordt voorkomen.
- Gegarandeerde bezorging: Zorgt ervoor dat berichten hun bedoelde ontvangers bereiken.
- Losse koppeling: Afzenders en ontvangers kennen elkaar niet, wat de onafhankelijkheid van services bevordert.
- Taakverdeling: Verdeelt berichten efficiënt over meerdere instanties van een service die berichten verwerkt.
- Asynchroon: Services wachten niet op antwoorden, waardoor de prestaties en reactiesnelheid verbeteren.
Bus versus makelaar: het verschil
Hoewel beide communicatie op basis van gebeurtenissen mogelijk maken, is een eventbus doorgaans een lichtgewicht mechanisme in het geheugen binnen één applicatie of proces.
Een berichtenmakelaar is een robuust, extern systeem dat is ontworpen voor communicatie tussen processen en services via een netwerk. Deze biedt functies zoals berichtenwachtrijen, onderwerpen, persistentie en complexe routering.
Je kunt een berichtenmakelaar zien als een krachtige, gedistribueerde implementatie van het concept van een eventbus.
Makelaars maken choreografie mogelijk
Berichtenmakelaars vormen de ruggengraat van choreografiesaga's. Ze stellen services in staat om:
- Gebeurtenissen te publiceren: Een service voltooit een stap en publiceert een gebeurtenis naar een specifiek onderwerp (een benoemd kanaal op de makelaar).
- Op gebeurtenissen te abonneren: Andere services die geïnteresseerd zijn in die gebeurtenis, abonneren zich op het onderwerp en ontvangen de gebeurtenis om hun volgende stap te starten.
Deze gedecentraliseerde stroom, die door gebeurtenissen via een makelaar wordt aangestuurd, vormt het choreografiepatroon.
Voorbeeld: een gebeurtenis publiceren
Hier volgt een vereenvoudigd voorbeeld van hoe een OrderService een OrderCreated-gebeurtenis kan voorbereiden en conceptueel kan "publiceren" met behulp van een berichtenmakelaar.
De makelaar verzorgt het daadwerkelijke verzenden naar abonnees.
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.");
}
}Voorbeeld: je abonneren op een gebeurtenis
Laten we nu bekijken hoe een PaymentService zich conceptueel zou "abonneren" op de OrderCreated-gebeurtenis van de makelaar en deze zou verwerken.
De service luistert op het onderwerp order_events.
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.");
}
}
}Controleer je begrip
Berichtenmakelaars zijn cruciaal voor choreografiesaga's. Welke van de volgende opties zijn belangrijke voordelen die berichtenmakelaars bieden voor betrouwbare asynchrone communicatie?
Samenvatting: eventbus en makelaars
In deze les hebben we onderzocht hoe eventbussen en berichtenmakelaars betrouwbare asynchrone communicatie mogelijk maken, vooral voor choreografiesaga's.
- Een eventbus is een patroon voor communicatie tussen gebeurtenissen binnen één proces.
- Een berichtenmakelaar is een extern, robuust systeem dat dit patroon implementeert voor gedistribueerde services en functies biedt zoals duurzaamheid en gegarandeerde bezorging.
- Ze stellen services in staat gebeurtenissen te publiceren en zich op onderwerpen te abonneren. Zo vormen ze de kern van de voortgang van choreografiesaga's.
Vervolgens bekijken we hoe je compensatie afhandelt wanneer er iets misgaat in deze gebeurtenisgestuurde stromen!
Leer Communicatiepatronen voor microservices (Saga, Circuit Breaker) met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Eventbus en message brokers” gratis?
Ja — de volledige tekst van “Eventbus en message brokers” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Communicatiepatronen voor microservices (Saga, Circuit Breaker) wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Communicatiepatronen voor microservices (Saga, Circuit Breaker) bevat in totaal 4 lessen.
Wat leer ik in “Eventbus en message brokers”?
Gebruik message brokers en eventbussen voor betrouwbare asynchrone communicatie in choreography sagas. Je oefent met Communicatiepatronen voor microservices (Saga, Circuit Breaker) door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Communicatiepatronen voor microservices (Saga, Circuit Breaker) te beginnen?
Ervaring vooraf is niet nodig. Communicatiepatronen voor microservices (Saga, Circuit Breaker) op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Eventbus en message brokers”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Communicatiepatronen voor microservices (Saga, Circuit Breaker)?
Ja. Elke les over Communicatiepatronen voor microservices (Saga, Circuit Breaker) bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Eventgedreven Sagas ontwerpen
- Eventbus en message brokers
- Compensatie met events afhandelen
- Idempotente eventconsumers bouwen