0Pricing
Edge Computing with Cloudflare Workers & Deno · Leçon

Architectures pilotées par les événements

Construisez des systèmes pilotés par les événements avec Workers et Deno, capables de réagir aux données en temps réel et aux actions des utilisateurs.

Architectures pilotées par les événements est une leçon Edge Computing with Cloudflare Workers & Deno 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 Edge Computing with Cloudflare Workers & Deno, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

What is Event-Driven Architecture?

Welcome! Today we'll explore Event-Driven Architecture (EDA). It's a design pattern where services communicate by producing and consuming events, rather than direct calls.

Think of it like a news channel: producers (reporters) publish news (events), and consumers (viewers) react to the news they're interested in.

  • Event: A significant change in state, like 'user registered'.
  • Producer: The system that generates and sends an event.
  • Consumer: The system that listens for and reacts to an event.

Why Event-Driven at the Edge?

EDA shines brightly at the edge, offering significant benefits for performance and scalability:

  • Decoupling: Services operate independently, reducing dependencies.
  • Scalability: Individual components can scale up or down based on event load.
  • Real-time Responsiveness: React to user actions or data changes instantly.
  • Resilience: If one consumer fails, others can still process events.

This makes your edge applications more robust and flexible.

Cloudflare Workers as Event Reactors

Cloudflare Workers are perfect for event-driven systems because they are inherently reactive. They spring into action when triggered by an event!

Common events that trigger Workers include:

  • Incoming HTTP requests (e.g., an API call)
  • Messages from a queue (e.g., Cloudflare Queues)
  • Scheduled cron jobs
  • Other Cloudflare service bindings

They act as lightweight, distributed consumers.

Code: Worker Reacting to HTTP Event

Here's a basic Worker that processes an incoming HTTP request as an 'event'. It reads a custom header to identify the event type and logs it.

Try changing the X-Event-Type header when you test it!

export default {
  async fetch(request, env, ctx) {
    const eventType = request.headers.get('X-Event-Type') || 'unknown_event';
    const eventData = await request.json().catch(() => ({}));

    console.log(`Worker received event: ${eventType}`);
    console.log(`Event data: ${JSON.stringify(eventData)}`);

    // In a real app, you'd process eventData here
    return new Response(`Event '${eventType}' processed!`, { status: 200 });
  },
};

Deno as an Event Originator

Just as Workers consume events, Deno applications can act as event producers. A Deno backend service or a CLI tool might generate events.

For instance, a Deno script could:

  • Detect a file change and send an event.
  • Process data and publish a 'data_processed' event.
  • Handle a user action and send a 'user_activity' event to your edge Worker.

Code: Deno Sends Event to Worker

This Deno script acts as a producer, sending a 'user_registered' event to our Cloudflare Worker via an HTTP POST request. The Worker then acts as the consumer.

Remember to replace 'YOUR_WORKER_URL' with your deployed Worker's URL!

// main.ts
async function sendUserRegisteredEvent() {
  const workerUrl = "https://your-worker-name.your-account.workers.dev"; // Replace this!

  const response = await fetch(workerUrl, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-Event-Type": "user_registered"
    },
    body: JSON.stringify({ userId: "user_abc", timestamp: Date.now() })
  });

  if (response.ok) {
    console.log("User registered event sent successfully!");
  } else {
    console.error("Failed to send event:", response.status, await response.text());
  }
}

sendUserRegisteredEvent();

Cloudflare Queues for Robust Events

For truly robust event-driven systems, especially at the edge, Cloudflare Queues are invaluable. They act as an event bus, providing a reliable buffer between producers and consumers.

  • Asynchronous: Producers don't wait for consumers to finish.
  • Guaranteed Delivery: Messages are durably stored until processed.
  • Load Leveling: Handles bursts of events without overwhelming consumers.
  • Decoupling: Producers and consumers don't need to know about each other directly.

Code: Worker Publishes to a Queue

Here, a Worker receives an HTTP request (an event) and then publishes a message to a Cloudflare Queue. This offloads heavy processing to a separate consumer.

To make this runnable, you'd need to bind a Queue in your wrangler.toml file (e.g., [[queues.producers]] binding = "MY_QUEUE" queue_name = "my-event-queue").

export default {
  async fetch(request, env, ctx) {
    const eventData = await request.json().catch(() => ({}));
    const eventType = eventData.type || 'api_trigger_event';

    // Publish event to a Cloudflare Queue
    // 'env.MY_QUEUE' refers to the queue binding configured
    await env.MY_QUEUE.send({
      eventType: eventType,
      payload: eventData
    });

    return new Response(`Event '${eventType}' queued successfully!`, { status: 202 });
  },
};

Code: Worker Consuming Queue Messages

This Worker is configured to consume messages directly from a Cloudflare Queue. It processes each message in a batch, extracting the event type and payload.

This Worker would have a queue handler instead of (or in addition to) a fetch handler. You'd configure this in your wrangler.toml (e.g., [[queues.consumers]] queue = "my-event-queue").

export default {
  async queue(batch, env, ctx) {
    for (const message of batch.messages) {
      const { eventType, payload } = message.body;
      console.log(`Processing event from queue: ${eventType}`);
      console.log(`Payload: ${JSON.stringify(payload)}`);

      // Implement your actual event processing logic here
      // e.g., update a database, send a notification, call another API
    }
  },
};

Quick Check: Event-Driven Concepts

Which of the following are key benefits of using an Event-Driven Architecture at the edge?

Recap: Event-Driven Edge Apps

Great job! You've learned about Event-Driven Architectures and how they supercharge applications at the edge.

  • EDA uses events, producers, and consumers for decoupled communication.
  • Cloudflare Workers are ideal for consuming and producing edge events.
  • Deno applications can act as powerful event producers.
  • Cloudflare Queues provide robust, asynchronous event delivery for resilience and scale.

This pattern is key for building highly responsive, scalable, and fault-tolerant edge applications. Keep exploring how events can transform your architecture!

Questions Fréquemment Posées

La leçon « Architectures pilotées par les événements » est-elle gratuite ?

Oui — le texte complet de « Architectures pilotées par les événements » 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 Edge Computing with Cloudflare Workers & Deno, passe à CoddyKit PRO. Le cours Edge Computing with Cloudflare Workers & Deno comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Architectures pilotées par les événements » ?

Construisez des systèmes pilotés par les événements avec Workers et Deno, capables de réagir aux données en temps réel et aux actions des utilisateurs. Tu pratiques Edge Computing with Cloudflare Workers & Deno 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 Edge Computing with Cloudflare Workers & Deno ?

Aucune expérience préalable n'est requise. Edge Computing with Cloudflare Workers & Deno 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 « Architectures pilotées par les événements » ?

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 Edge Computing with Cloudflare Workers & Deno ?

Oui. Chaque leçon Edge Computing with Cloudflare Workers & Deno 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

  1. Microservices en périphérie
  2. Architectures pilotées par les événements
  3. Géolocalisation et localisation
  4. Objets durables et coordination avec état
← Retour à Edge Computing with Cloudflare Workers & Deno