Hendelsesbuss og meldingsbrokere
Bruk meldingsbrokere og hendelsesbusser for å legge til rette for pålitelig asynkron kommunikasjon i koreograferte Sagaer.
Hendelsesbuss og meldingsbrokere er en gratis leksjon i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) inneholder totalt 4 leksjoner.
Pålitelige koreograferte sagaer
I en koreografert saga kommuniserer tjenester ved å utveksle hendelser. For at dette skal fungere pålitelig i et distribuert system, trenger vi robuste kommunikasjonsmekanismer.
Se for deg at en ordre opprettes, deretter må betales, og til slutt sendes. Hvert trinn er en hendelse som utløser den neste tjenesten.
- Order Service publiserer
OrderCreated - Payment Service abonnerer på
OrderCreatedog publisererPaymentProcessed - Shipping Service abonnerer på
PaymentProcessedog publisererShipmentScheduled
Hva er en hendelsesbuss?
En Event Bus er et mønster som gjør det mulig for ulike deler av en applikasjon (eller ulike tjenester) å kommunisere ved å sende og motta hendelser uten å kjenne hverandre direkte.
Se på den som et sentralt knutepunkt der hendelser kringkastes. Alle interesserte parter kan «lytte» etter bestemte hendelser.
Den kobler tjenestene fra hverandre, slik at de ikke trenger å vite hvem som behandler hendelsene deres, bare at en hendelse har funnet sted.
Hendelsesbussen i praksis
Se for deg en intern hendelsesbuss i en enkelt applikasjon:
- En bruker klikker på knappen «Save».
- UI-komponenten publiserer en
UserSaved-hendelse til hendelsesbussen. - En loggingsmodul, en varslingsmodul og en datasynkroniseringsmodul kan alle abonnere på
UserSaved.
Alle reagerer på hendelsen uten at brukergrensesnittet kjenner til dem. Dette er enkelt og effektivt for kommunikasjon i samme prosess.
Introduksjon til meldingsmeglere
En hendelsesbuss er utmerket for kommunikasjon i samme prosess, men distribuerte mikrotjenester trenger mer. Det er her Message Brokers kommer inn.
En meldingsmegler er en dedikert tjeneste (som RabbitMQ, Kafka eller AWS SQS) som fungerer som mellomledd for meldinger mellom ulike applikasjoner eller tjenester.
Den tilbyr avanserte funksjoner som er nødvendige for pålitelig kommunikasjon over nettverk.
Fordeler med meglere for sagaer
Meldingsmeglere gir viktige fordeler for koreograferte sagaer:
- Varighet: Meldinger beholdes selv om tjenester er nede, slik at datatap unngås.
- Garantert levering: Sikrer at meldinger når de tiltenkte mottakerne.
- Frakobling: Avsendere og mottakere kjenner ikke hverandre, noe som fremmer tjenestenes uavhengighet.
- Lastbalansering: Fordeler meldinger effektivt mellom flere instanser av en tjeneste som bruker meldingene.
- Asynkronitet: Tjenestene venter ikke på svar, noe som forbedrer ytelse og respons.
Buss eller megler: Forskjellen
Selv om begge legger til rette for hendelsesdrevet kommunikasjon, er en Event Bus vanligvis en lettvektsmekanisme i minnet i én enkelt applikasjon eller prosess.
En Message Broker er et robust, eksternt system laget for kommunikasjon mellom prosesser og tjenester over et nettverk. Den tilbyr funksjoner som meldingskøer, topics, persistens og kompleks ruting.
De kan sees på som en kraftig, distribuert implementasjon av konseptet hendelsesbuss.
Meldingsmeglere muliggjør koreografi
Meldingsmeglere er ryggraden i koreograferte sagaer. De gjør det mulig for tjenester å:
- Publisere hendelser: En tjeneste fullfører et trinn og publiserer en hendelse til et bestemt topic (en navngitt kanal hos megleren).
- Abonnere på hendelser: Andre tjenester som er interessert i hendelsen, abonnerer på topic-et og mottar hendelsen for å utløse sitt neste trinn.
Denne desentraliserte flyten, som drives av hendelser gjennom en megler, definerer koreografimønsteret.
Eksempel: Publisere en hendelse
Her er et forenklet eksempel på hvordan en OrderService kan klargjøre og konseptuelt «publisere» en OrderCreated-hendelse ved hjelp av en meldingsmegler.
Megleren håndterer selve sendingen til abonnentene.
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.");
}
}Eksempel: Abonnere på en hendelse
La oss nå se hvordan en PaymentService konseptuelt kan «abonnere» på og behandle OrderCreated-hendelsen fra megleren.
Den lytter på topic-et 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.");
}
}
}Test forståelsen
Meldingsmeglere er avgjørende for koreograferte sagaer. Hvilke av følgende er viktige fordeler som meldingsmeglere gir for pålitelig asynkron kommunikasjon?
Oppsummering: Hendelsesbusser og meglere
I denne leksjonen har vi sett på hvordan Event Buses og Message Brokers legger til rette for pålitelig asynkron kommunikasjon, særlig for koreograferte sagaer.
- En Event Bus er et mønster for hendelseskommunikasjon i samme prosess.
- En Message Broker er et eksternt, robust system som implementerer dette mønsteret for distribuerte tjenester, med funksjoner som varighet og garantert levering.
- De gjør det mulig for tjenester å publisere hendelser og abonnere på topics, noe som utgjør kjernen i hvordan koreograferte sagaer utvikler seg.
Deretter skal vi se på hvordan kompensasjon håndteres når noe går galt i disse hendelsesdrevne flytene!
Lær deg Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Hendelsesbuss og meldingsbrokere» gratis?
Ja – hele teksten i «Hendelsesbuss og meldingsbrokere» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) inneholder totalt 4 leksjoner.
Hva lærer jeg i «Hendelsesbuss og meldingsbrokere»?
Bruk meldingsbrokere og hendelsesbusser for å legge til rette for pålitelig asynkron kommunikasjon i koreograferte Sagaer. Du øver på Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)?
Ingen tidligere erfaring er nødvendig. Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Hendelsesbuss og meldingsbrokere»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)-leksjonen?
Ja. Alle Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Utforming av hendelsesdrevne Sagaer
- Hendelsesbuss og meldingsbrokere
- Håndtering av kompensasjon med hendelser
- Bygging av idempotente hendelseskonsumenter