Queue Service ทำงานอย่างไร: ส่ง รับ และลบ

ข้อความหนึ่งผ่าน 3 ขั้นเสมอ ระบบรับประกันว่าไม่หาย แม้ Worker จะล่มกลางงาน

  1. ฝั่งที่สร้างงาน (เช่น เว็บตอนลูกค้ากดสั่งซื้อ) ส่ง ข้อความเข้า Queue ข้อความถูกบันทึกลงหลายเครื่องก่อนตอบกลับ แล้วเว็บตอบลูกค้าได้ทันที
  2. Worker รับ ข้อความไปทำ ข้อความถูกซ่อนจากคนอื่นตาม Visibility timeout และ Worker ได้ receipt ของการรับครั้งนั้น ถ้ายังไม่มีข้อความ การรับรอได้สูงสุด 20 วินาที (long polling)
  3. ทำเสร็จแล้ว Worker ลบ ข้อความด้วย receipt ข้อความจึงหายไปจาก Queue
  4. ถ้า Worker ล่มหรือไม่ลบภายใน Visibility timeout ข้อความจะกลับมาให้ Worker ตัวอื่นรับต่อ และนับจำนวนครั้งที่รับเพิ่มขึ้น
  5. ถ้าตั้ง รับได้สูงสุด ไว้ ข้อความที่รับเกินจำนวนนั้นจะถูกย้ายไป Dead-letter queue ไว้ตรวจภายหลัง แทนที่จะวนไม่จบ

การตั้งค่าของแต่ละ Queue

ตั้งค่าค่าเริ่มต้นช่วงที่ตั้งได้
Visibility timeout30 วินาที0 วินาที – 12 ชั่วโมง (Worker ขอเปลี่ยนเป็นรายข้อความได้)
เก็บข้อความนาน4 วัน1 นาที – 14 วัน
Delay00 – 15 นาที (กำหนดรายข้อความได้)
รับได้สูงสุด0 (ไม่จำกัด)0 – 1,000 ครั้ง แล้วย้ายไป Dead-letter queue หรือทิ้ง

ข้อความถูกส่งให้ Worker อย่างน้อยหนึ่งครั้ง ในกรณีที่เกิดน้อยมาก (เช่น เครื่องเสียระหว่างรับ) ข้อความเดียวกันอาจถูกส่งซ้ำ ให้ออกแบบงานให้ทำซ้ำได้โดยไม่เสียหาย เช่น ตรวจเลขออเดอร์ก่อนตัดสต็อก ลำดับข้อความเป็นแบบพยายามให้เก่าก่อน ไม่รับประกันลำดับเป๊ะ

ค่าบริการคิดตามจำนวน Request (ส่ง รับ ลบ และอื่น ๆ ทุก 64 KB ของข้อความนับ 1 Request) ขนาดข้อความที่รับออกไป และข้อความที่ค้างเก็บอยู่ใน Queue (คิดตามขนาดและเวลา Queue ที่ Worker ดึงทันแทบไม่เสียส่วนนี้) ไม่มีค่าขั้นต่ำรายเดือน ราคาปัจจุบันดูได้ที่หน้าราคา

ยังแก้ไม่ได้? ให้ทีมงานช่วย

เปิด ticket จากหน้าจัดการ บอกชื่อเว็บหรือบริการ สิ่งที่ทำ และข้อความที่เห็นบนจอ ทีมงานจะตอบกลับในเรื่องเดียวกัน ติดตามได้ในที่เดียว