Queues en asynchrone taken
Gebruik Cloudflare Queues voor het beheren van asynchrone taken en achtergrondverwerking op schaal.
Queues en asynchrone taken is een gratis Edge computing met Cloudflare Workers en Deno-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 Edge computing met Cloudflare Workers en Deno. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Edge computing met Cloudflare Workers en Deno bevat in totaal 4 lessen.
Asynchrone taken aan de edge
Aan de edge verwachten gebruikers razendsnelle reacties. Maar niet elke taak hoeft onmiddellijk te worden uitgevoerd. Soms heb je bewerkingen die op de achtergrond kunnen worden uitgevoerd, zoals e-mails versturen, analyses verwerken of rapporten genereren.
Deze worden asynchrone taken genoemd. Ze blokkeren de directe aanvraag van de gebruiker niet. Daardoor kan je Worker snel reageren terwijl de langere taak afzonderlijk wordt voltooid.
Introductie tot Cloudflare Queues
Cloudflare Queues bieden een robuuste manier om deze asynchrone taken te beheren. Ze fungeren als buffer, zodat verschillende onderdelen van je applicatie (vaak Cloudflare Workers) met elkaar kunnen communiceren zonder dat ze op hetzelfde moment rechtstreeks beschikbaar hoeven te zijn.
Je kunt het zien als een takenlijst: de ene Worker voegt taken toe en een andere Worker pakt ze op wanneer die klaar is.
De basis van wachtrijen: P-C-M
Elk systeem met berichtenwachtrijen, waaronder Cloudflare Queues, draait om drie kernbegrippen:
- Producenten: De entiteiten die berichten maken en naar de wachtrij sturen. In ons geval is dit vaak een Cloudflare Worker die reageert op een HTTP-aanvraag.
- Consumenten: De entiteiten die berichten uit de wachtrij ophalen en verwerken. Dit is meestal een andere Cloudflare Worker die is geconfigureerd om naar de wachtrij te luisteren.
- Berichten: De daadwerkelijke gegevens of taakinstructies die door de wachtrij worden doorgegeven.
Je eerste wachtrij configureren
Als je Cloudflare Queues wilt gebruiken, moet je eerst een wachtrij maken in je Cloudflare-dashboard of via de Wrangler CLI. Nadat je de wachtrij hebt gemaakt, koppel je deze aan een Worker, zodat deze toegankelijk wordt via het env-object van de Worker.
Deze koppeling bepaalt de naam die je Worker gebruikt om met de wachtrij te communiceren (bijvoorbeeld env.MY_QUEUE).
Berichten naar een wachtrij sturen
Een Worker die als producent fungeert, stuurt berichten naar een gekoppelde wachtrij met de methode send(). Deze methode neemt een JavaScript-object als argument, dat wordt geserialiseerd en in de wachtrij wordt opgeslagen.
De bewerking send() is zelf asynchroon, maar zorgt ervoor dat het bericht snel aan de wachtrij wordt toegevoegd. Zo kan de producerende Worker zijn primaire taak voltooien zonder te wachten tot het bericht is verwerkt.
Worker die berichten produceert
Hier zie je een voorbeeld van een Worker die een HTTP-aanvraag ontvangt en een eenvoudig bericht naar een wachtrij met de naam MY_QUEUE stuurt. De gebruiker krijgt onmiddellijk een antwoord.
export interface Env {
MY_QUEUE: Queue;
}
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === '/send-task') {
const message = {
type: 'email_notification',
userId: 'user123',
subject: 'Welcome to CoddyKit!'
};
await env.MY_QUEUE.send(message);
return new Response('Email task enqueued!', { status: 200 });
}
return new Response('Hello from Producer Worker!', { status: 200 });
},
};Berichten uit een wachtrij verwerken
Een Worker die als consument fungeert, wordt geconfigureerd met een speciale queue-handler. Cloudflare roept deze handler aan wanneer er berichten beschikbaar zijn in de gekoppelde wachtrij. Berichten worden voor een efficiënte verwerking in batches afgeleverd.
In de queue-handler loop je door de array batch.messages. Voor elk bericht heb je toegang tot de body ervan (de gegevens die de producent heeft verstuurd) en kun je de benodigde verwerking op de achtergrond uitvoeren.
Worker die berichten consumeert
Deze Worker is geconfigureerd om naar MY_QUEUE te luisteren. De Worker verwerkt elk bericht in de batch. Als een bericht succesvol is verwerkt, bevestigt message.ack() dit. Als er een fout optreedt, stuurt message.retry() het bericht terug naar de wachtrij voor een nieuwe poging.
export interface Env {
MY_QUEUE: Queue;
}
export default {
async queue(batch: MessageBatch, env: Env): Promise<void> {
for (const message of batch.messages) {
try {
const data = message.body as {
type: string;
userId: string;
subject: string;
};
console.log(`Processing ${data.type} for ${data.userId}: ${data.subject}`);
// Simulate sending an email or other background task
await new Promise(resolve => setTimeout(resolve, 500));
message.ack(); // Mark message as processed successfully
} catch (error) {
console.error(`Error processing message: ${error}`);
message.retry(); // Re-queue for another attempt
}
}
},
};Waarom edge-wachtrijen gebruiken?
Cloudflare Queues bieden verschillende krachtige voordelen voor edge-applicaties:
- Ontkoppeling: Producenten en consumenten hoeven niet rechtstreeks van elkaar op de hoogte te zijn.
- Betrouwbaarheid: Berichten blijven bewaard en kunnen automatisch opnieuw worden geprobeerd als de verwerking mislukt.
- Belastingsnivellering: Wachtrijen vangen pieken in de vraag op en voorkomen dat je backendservices worden overbelast.
- Schaalbaarheid: Schaal de verwerking eenvoudig op door meer consumerende Workers toe te voegen, zonder producenten te beïnvloeden.
- Asynchrone verwerking: Essentieel om reacties voor gebruikers snel te houden.
Praktische toepassingen van wachtrijen
Wachtrijen zijn bijzonder veelzijdig. Hier volgen enkele veelvoorkomende situaties waarin Cloudflare Queues uitblinken:
- Analyse en logboekregistratie: Verzamel en verwerk gegevens over gebruikersgebeurtenissen op de achtergrond.
- Afbeeldings- en videoverwerking: Start het verkleinen of voorzien van een watermerk na een upload.
- Meldingen: Verstuur e-mails, sms- of pushmeldingen zonder de gebruiker te laten wachten.
- Gegevenssynchronisatie: Geef wijzigingen asynchroon door aan meerdere downstreamservices.
- Batchtaken: Plan periodieke gegevenstransformaties of opruimtaken en voer ze uit.
Controle van je kennis over wachtrijen
Denk aan een situatie waarin een Cloudflare Worker een taak op de achtergrond moet starten (bijvoorbeeld een e-mail versturen) zonder het antwoord aan de gebruiker te vertragen. Welke van de volgende uitspraken over Cloudflare Queues zijn in deze situatie juist?
Samenvatting en volgende stappen
Je hebt Cloudflare Queues verkend, een krachtig hulpmiddel voor het beheren van asynchrone taken aan de edge. We hebben het producent-consumentmodel behandeld, evenals het versturen en verwerken van berichten en de belangrijke voordelen van wachtrijen, zoals betere betrouwbaarheid, schaalbaarheid en snellere reacties voor gebruikers.
Door taken met wachtrijen te ontkoppelen, kunnen je edge-applicaties complexe bewerkingen efficiënt uitvoeren zonder dat dit ten koste gaat van de prestaties. Experimenteer met het maken van je eigen wachtrijen en Workers om robuuste, asynchrone verwerkingsketens te bouwen!
Leer Edge computing met Cloudflare Workers en Deno 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
- 47
Veelgestelde vragen
Is de les “Queues en asynchrone taken” gratis?
Ja — de volledige tekst van “Queues en asynchrone taken” 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 Edge computing met Cloudflare Workers en Deno wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Edge computing met Cloudflare Workers en Deno bevat in totaal 4 lessen.
Wat leer ik in “Queues en asynchrone taken”?
Gebruik Cloudflare Queues voor het beheren van asynchrone taken en achtergrondverwerking op schaal. Je oefent met Edge computing met Cloudflare Workers en Deno 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 Edge computing met Cloudflare Workers en Deno te beginnen?
Ervaring vooraf is niet nodig. Edge computing met Cloudflare Workers en Deno 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 “Queues en asynchrone taken”?
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 Edge computing met Cloudflare Workers en Deno?
Ja. Elke les over Edge computing met Cloudflare Workers en Deno 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
- WebSockets en realtime
- Queues en asynchrone taken
- Service Bindings en integraties
- Cron Triggers en geplande Workers