Bootcamp i backendutvikling med Node.js · leksjon

Kommunikasjon mellom tjenester med meldingskøer

Lær hvordan mikrotjenester kommuniserer asynkront med hverandre ved hjelp av meldingskøer som RabbitMQ, slik at tjenestene kobles fra hverandre og blir mer robuste.

Leksjon 4 av 413 trinn

Kommunikasjon mellom tjenester med meldingskøer er en gratis leksjon i Bootcamp i backendutvikling med Node.js på CoddyKit. Dette er leksjon 4 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 Bootcamp i backendutvikling med Node.js, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.

Synkron kontra asynkron kommunikasjon

Mikrotjenester kan kommunisere på to måter:

  • Synkront (HTTP/gRPC): klienten venter på et svar
  • Asynkront (meldinger): klienten sender en melding og går videre

Asynkron kommunikasjon kobler tjenestene fra hverandre, slik at en treg eller utilgjengelig forbruker ikke blokkerer produsenten.

Hva er en meldingskø?

En meldingskø er en buffer som lagrer meldinger til en forbruker er klar til å behandle dem. Produsenter legger meldinger i køen, og forbrukere henter dem ut – vanligvis i FIFO-rekkefølge.

Populære meldingsmeglere inkluderer RabbitMQ, Kafka og Redis Streams.

Viktige fordeler

Køer gir reelle fordeler i et mikrotjenestesystem:

  • Løs kobling: tjenester trenger ikke å kjenne til hverandre
  • Robusthet: meldinger venter hvis en forbruker er utilgjengelig
  • Belastningsutjevning: belastningstopper jevnes ut
  • Skalerbarhet: legg til flere forbrukere for raskere behandling

Grunnleggende konsepter

Tre roller definerer mønsteret:

  • Produsent: publiserer meldinger
  • Kø: lagrer dem
  • Forbruker: mottar og behandler dem

I RabbitMQ ligger en exchange mellom produsenten og køen og avgjør rutingen.

Koble til fra Node.js

Pakken amqplib kobler Node.js til RabbitMQ. De åpner først en tilkobling og deretter en kanal for sending og mottak.

const amqp = require('amqplib');
const conn = await amqp.connect('amqp://localhost');
const channel = await conn.createChannel();

Deklarere en kø

Før De sender meldinger, må De deklarere køen slik at den finnes. Alternativet durable gjør at køen overlever en omstart av meldingsmegleren.

await channel.assertQueue('orders', { durable: true });

Publisere en melding

Send en melding med sendToQueue. Meldinger er buffere, så objekter må først serialiseres til JSON.

const order = { id: 7, total: 99 };
channel.sendToQueue('orders', Buffer.from(JSON.stringify(order)), {
  persistent: true
});

Konsumere meldinger

En forbruker abonnerer med consume. Hver levert melding analyseres og behandles.

channel.consume('orders', (msg) => {
  const order = JSON.parse(msg.content.toString());
  console.log('Processing order', order.id);
});

Kvitteringer

For å unngå å miste arbeid hvis en forbruker krasjer, venter RabbitMQ på en ack. Først når De kaller channel.ack(msg), fjernes meldingen fra køen.

channel.consume('orders', (msg) => {
  handle(JSON.parse(msg.content.toString()));
  channel.ack(msg);
});

Publisering/abonnering med fanout

Noen ganger trenger mange tjenester den samme hendelsen, for eksempel at en bestilling er lagt inn. En fanout exchange kringkaster en melding til alle tilknyttede køer, slik at publiser/abonner-mønsteret kan brukes.

await channel.assertExchange('events', 'fanout');
channel.publish('events', '', Buffer.from('order.created'));

Håndtere feil

Robust meldingshåndtering planlegger for feil:

  • Nye forsøk ved midlertidige feil
  • Dead-letter-køer for meldinger som fortsetter å mislykkes
  • Idempotens slik at det er trygt å behandle samme melding på nytt

Rask sjekk

Test kunnskapene Deres om meldingshåndtering.

Oppsummering

De har lært om asynkron kommunikasjon mellom tjenester:

  • Meldingskøer kobler produsenter fra forbrukere
  • Koble til med amqplib, og deklarer holdbare køer
  • Publiser med sendToQueue, og konsumer med consume
  • Bruk ack for å garantere levering
  • Fanout-utvekslinger muliggjør pub/sub, mens dead-letter-køer håndterer feil

Meldingshåndtering gjør mikrotjenestesystemer robuste og skalerbare.

Gratis å komme i gang

Lær deg JavaScript 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
22
Leksjoner
92

Ofte stilte spørsmål

Er leksjonen «Kommunikasjon mellom tjenester med meldingskøer» gratis?

Ja – hele teksten i «Kommunikasjon mellom tjenester med meldingskøer» 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 Bootcamp i backendutvikling med Node.js-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.

Hva lærer jeg i «Kommunikasjon mellom tjenester med meldingskøer»?

Lær hvordan mikrotjenester kommuniserer asynkront med hverandre ved hjelp av meldingskøer som RabbitMQ, slik at tjenestene kobles fra hverandre og blir mer robuste. Du øver på Bootcamp i backendutvikling med Node.js 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 Bootcamp i backendutvikling med Node.js?

Ingen tidligere erfaring er nødvendig. Bootcamp i backendutvikling med Node.js 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 4 av 4.

Hvor lang tid tar leksjonen «Kommunikasjon mellom tjenester med meldingskøer»?

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 Bootcamp i backendutvikling med Node.js-leksjonen?

Ja. Alle Bootcamp i backendutvikling med Node.js-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

  1. Introduksjon til mikrotjenestearkitektur
  2. Utvikle Node.js-mikrotjenester
  3. Implementere en API Gateway
  4. Kommunikasjon mellom tjenester med meldingskøer
← Tilbake til Bootcamp i backendutvikling med Node.js