Edge Computing with Cloudflare Workers & Deno · บทเรียน

คิวและงานแบบอะซิงโครนัส

ใช้ Cloudflare Queues เพื่อจัดการงานแบบอะซิงโครนัสและการประมวลผลเบื้องหลังในระดับใหญ่

บทเรียน 2 จาก 412 ขั้นตอน

คิวและงานแบบอะซิงโครนัส เป็นบทเรียน Edge Computing with Cloudflare Workers & Deno ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Edge Computing with Cloudflare Workers & Deno และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Edge Computing with Cloudflare Workers & Deno มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

Async Tasks at the Edge

At the edge, users expect lightning-fast responses. But not every task needs to happen instantly. Sometimes, you have operations that can run in the background, like sending emails, processing analytics, or generating reports.

These are called asynchronous tasks. They don't block the user's immediate request, allowing your Worker to respond quickly while the longer task completes separately.

Introducing Cloudflare Queues

Cloudflare Queues provide a robust way to manage these asynchronous tasks. They act as a buffer, allowing different parts of your application (often Cloudflare Workers) to communicate without needing to be directly available at the same time.

Think of it like a to-do list where one Worker adds tasks, and another Worker picks them up when it's ready.

Queue Fundamentals: P-C-M

Every message queue system, including Cloudflare Queues, revolves around three core concepts:

  • Producers: The entities that create and send messages to the queue. In our case, this will often be a Cloudflare Worker responding to an HTTP request.
  • Consumers: The entities that retrieve messages from the queue and process them. This is typically another Cloudflare Worker configured to listen to the queue.
  • Messages: The actual data or task instructions being passed through the queue.

Configuring Your First Queue

To use Cloudflare Queues, you first need to create a queue in your Cloudflare dashboard or via the Wrangler CLI. Once created, you bind it to a Worker, making it accessible through the Worker's env object.

This binding specifies the name your Worker will use to interact with the queue (e.g., env.MY_QUEUE).

Sending Messages to a Queue

A Worker acting as a Producer will send messages to a bound queue using the send() method. This method takes a JavaScript object as its argument, which will be serialized and stored in the queue.

The send() operation is asynchronous itself, but it ensures the message is enqueued quickly, allowing the producer Worker to complete its primary task without waiting for the message to be processed.

Worker Producing Messages

Here's an example of a Worker receiving an HTTP request and sending a simple message to a queue named MY_QUEUE. The user gets an immediate response.

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 });
  },
};

Processing Queue Messages

A Worker acting as a Consumer is configured with a special queue handler. This handler is invoked by Cloudflare when there are messages available in the bound queue. Messages are delivered in batches for efficiency.

Inside the queue handler, you iterate through the batch.messages array. For each message, you can access its body (the data sent by the producer) and perform the necessary background processing.

Worker Consuming Messages

This Worker is configured to listen to MY_QUEUE. It processes each message in the batch. If a message is processed successfully, message.ack() acknowledges it. If an error occurs, message.retry() sends it back to the queue for another attempt.

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
      }
    }
  },
};

Why Use Edge Queues?

Cloudflare Queues offer several powerful benefits for edge applications:

  • Decoupling: Producers and consumers don't need to know about each other directly.
  • Reliability: Messages are persistent and can be retried automatically if processing fails.
  • Load Leveling: Queues absorb spikes in demand, preventing your backend services from being overwhelmed.
  • Scalability: Easily scale processing by adding more consumer Workers without affecting producers.
  • Asynchronous Processing: Crucial for keeping user-facing responses fast.

Practical Queue Use Cases

Queues are incredibly versatile. Here are some common scenarios where Cloudflare Queues shine:

  • Analytics & Logging: Collect and process user event data in the background.
  • Image/Video Processing: Trigger resizing or watermarking after an upload.
  • Notifications: Send emails, SMS, or push notifications without delaying the user.
  • Data Synchronization: Propagate changes to multiple downstream services asynchronously.
  • Batch Jobs: Schedule and execute periodic data transformations or cleanup tasks.

Queue Concepts Check

Consider a scenario where a Cloudflare Worker needs to initiate a background task (e.g., sending an email) without delaying the user's response. Which of the following statements about Cloudflare Queues are correct for this scenario?

Recap & Next Steps

You've now explored Cloudflare Queues, a powerful tool for managing asynchronous tasks at the edge. We covered the producer-consumer model, how to send and process messages, and the significant benefits queues bring, such as improved reliability, scalability, and faster user responses.

By decoupling tasks with queues, your edge applications can handle complex operations efficiently without compromising performance. Experiment with creating your own queues and Workers to build robust, asynchronous workflows!

เริ่มต้นได้ฟรี

เรียนรู้ Edge Computing with Cloudflare Workers & Deno ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
47

คำถามที่พบบ่อย

บทเรียน “คิวและงานแบบอะซิงโครนัส” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คิวและงานแบบอะซิงโครนัส” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Edge Computing with Cloudflare Workers & Deno ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Edge Computing with Cloudflare Workers & Deno มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คิวและงานแบบอะซิงโครนัส”

ใช้ Cloudflare Queues เพื่อจัดการงานแบบอะซิงโครนัสและการประมวลผลเบื้องหลังในระดับใหญ่ คุณปฏิบัติ Edge Computing with Cloudflare Workers & Deno ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Edge Computing with Cloudflare Workers & Deno หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Edge Computing with Cloudflare Workers & Deno บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “คิวและงานแบบอะซิงโครนัส” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Edge Computing with Cloudflare Workers & Deno นี้ได้ไหม

ได้ บทเรียน Edge Computing with Cloudflare Workers & Deno ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. WebSockets และแบบเรียลไทม์
  2. คิวและงานแบบอะซิงโครนัส
  3. การเชื่อมโยงบริการและการผสานระบบ
  4. ทริกเกอร์ Cron และ Workers ตามกำหนดเวลา
← กลับไปที่ Edge Computing with Cloudflare Workers & Deno