เราภูมิใจและตื่นเต้นที่จะประกาศ QStash 🔥🔥🔥
อย่างเป็นทางการ QStash คือคิวข้อความและตัวกำหนดเวลางานที่ออกแบบมาสำหรับรันไทม์แบบไร้เซิร์ฟเวอร์ พูดอย่างไม่เป็นทางการ QStash เป็นเหมือนกาวสำหรับฟังก์ชันไร้เซิร์ฟเวอร์ของคุณ
มีการรับรู้ว่าระบบไร้เซิร์ฟเวอร์นั้นดีสำหรับงานง่ายๆ เท่านั้น ไม่อีกต่อไป. ผู้คนสร้างระบบอันทรงพลังด้วยสแต็กแบบไร้เซิร์ฟเวอร์ ระบบอันทรงพลังประกอบด้วยองค์ประกอบหลายอย่าง การสื่อสารระหว่างส่วนประกอบเหล่านั้นถือเป็นปัญหาทางวิศวกรรมใหญ่ มีวิธีแก้ไขปัญหาที่ยอดเยี่ยมอยู่แล้ว แต่เราคิดว่าโซลูชันที่มีอยู่ไม่เหมาะกับพื้นที่ไร้เซิร์ฟเวอร์ อาจซับซ้อนเกินไปหรือไม่ได้ออกแบบมาเพื่อทำงานกับรันไทม์ไร้สถานะ ดังนั้นเราจึงต้องการวิธีแก้ปัญหาซึ่ง (คือ):
- ทำงานได้ทุกที่ รวมถึงแบบไร้เซิร์ฟเวอร์และ Edge
- การส่งข้อความเป็นบริการที่ไม่มีแบ็กเอนด์ให้ผู้ใช้เรียกใช้
- น้ำหนักเบา เข้าใจง่าย ไม่ต้องเรียนรู้อะไรเลย
- ราคาปรับเป็นศูนย์
เรามาพูดถึงตัวอย่างในโลกแห่งความเป็นจริงกันดีกว่า เรามีแอปอีคอมเมิร์ซและเราต้องการส่งอีเมลแจ้งข้อมูลหลังการซื้อแต่ละครั้ง เรามีบริการ (เส้นทาง API) สำหรับการซื้อใหม่ (newPurchase) และบริการที่สองสำหรับการส่งอีเมลและการแจ้งเตือน (sendEmail) เราสามารถเรียกใช้บริการ sendEmail ได้จากบริการ newPurchase แต่จะเกิดอะไรขึ้นถ้าการโทรล้มเหลว? เราควรรอการตอบกลับแล้วลองอีกครั้งหรือไม่ จะเกิดอะไรขึ้นหากมีการโทรเข้ามากเกินไปทำให้บริการ sendEmail แออัดและบริการไม่ตอบสนองตรงเวลา? คุณต้องจัดการกรณีเหล่านี้ทั้งหมดในบริการ newPurchase ของคุณ นอกจากนี้ เมื่อคุณเปลี่ยนแปลงสัญญาบริการ sendEmail คุณต้องอัปเดตบริการซื้อใหม่ของคุณด้วย
หากคุณใช้ QStash ในตัวอย่างข้างต้น คุณเพียงแค่ส่งคำขอไปยัง QStash จากบริการ newPurchase QStash จะจัดคิวคำขอและเรียกใช้บริการ sendEmail หากบริการไม่ตอบสนอง QStash จะลองอีกครั้งโดยใช้กลยุทธ์การถอยกลับ เวลาแฝงของบริการ sendEmail จะไม่ส่งผลต่อบริการ newPurchase เนื่องจากจะไม่รอการตอบกลับจากบริการ sendEmail QStash แยกบริการการซื้อและส่งอีเมลใหม่ คุณสามารถอัปเดตบริการทั้งสองแยกกันได้ตราบใดที่คุณรักษารูปแบบข้อความที่เข้ากันได้
ด้วย QStash คุณสามารถเพิ่ม delays ได้ ต่อการร้องขอ ส่งอีเมล 3 วันหลังจากการจัดส่งเพื่อเตือนให้ลูกค้าเพิ่มรีวิว คุณยังสามารถจัดกำหนดการงานได้ คุณสามารถส่งคำขอด้วยนิพจน์ CRON ได้ ดังนั้นคำขอจะถูกเรียกใช้ซ้ำๆ

ตอนนี้เรามาเยี่ยมชมฟีเจอร์ต่างๆ ของ QStash กันแบบคร่าวๆ:
ทำงานได้ทุกที่
แทนที่จะใช้การส่งข้อความแบบดึงแบบดั้งเดิมที่คุณต้องการใช้กระบวนการที่ใช้เวลานานเพื่อบริโภคจากคิว QStash จะส่งข้อความไปยัง API ของคุณ ซึ่งจะทำให้คุณสามารถใช้ฟังก์ชันไร้เซิร์ฟเวอร์เพื่อประมวลผลได้ เราจัดการการลองใหม่ ความล่าช้าที่กำหนดเอง และการกำหนดเวลาให้กับคุณ สิ่งที่คุณต้องมีคือ HTTP API ที่เข้าถึงได้แบบสาธารณะ
สเกลราคาเป็นศูนย์
ราคา QStash คือ 1 ดอลลาร์ต่อ 100,000 คำขอ ข้อดีคือไม่มีขั้นต่ำหรือการชำระเงินคงที่ คุณจ่ายเฉพาะสิ่งที่คุณใช้ หากคุณคาดหวังคำขอหลายล้านคำขอ เราจะเสนอแผนระดับองค์กรในราคาต่อคำขอที่ต่ำกว่า
อัปเดต - กันยายน 2022
เราลดราคา QStash ลงเหลือ 1 ดอลลาร์ต่อคำขอ 100,000 รายการ ดูหน้า QStashPricing สำหรับข้อมูลการกำหนดราคาล่าสุด
จุดสิ้นสุดและหัวข้อ
คุณรวมจุดปลายพร้อมกับข้อความไปยัง QStash ดังนั้น QStash จึงส่งข้อความไปยังตำแหน่งข้อมูลนี้ นอกจากนี้ คุณยังสามารถกำหนดหัวข้อที่อนุญาตให้จัดกลุ่มจุดปลายตั้งแต่หนึ่งจุดขึ้นไปไว้ในเนมสเปซเดียวได้ ด้วยหัวข้อที่เป็นนามธรรม คุณสามารถแก้ไขจุดสิ้นสุดได้โดยไม่ต้องแตะการใช้งานแบ็กเอนด์ ด้านล่างส่งคำขอไปยังหัวข้อ user-apis . สำเนาของข้อความจะถูกส่งไปยังปลายทางแต่ละจุด
กำลังส่งไปยังปลายทาง
curl -XPOST \
"https://qstash.upstash.io/v1/publish/https://example.com" \
-H "Authorization: Bearer XXX" \
-H "Content-Type: application/json" \
-d "{ \"hello\" : \"world\" }" กำลังส่งไปที่หัวข้อ
curl -XPOST \
"https://qstash.upstash.io/v1/publish/user-apis" \
-H "Authorization: Bearer XXX" \
-H "Content-Type: application/json" \
-d "{ \"hello\" : \"world\" }" กำหนดการ
QStash สามารถส่งงานของคุณซ้ำตามกำหนดเวลาได้ ตั้งค่านิพจน์ CRON เป็นค่าให้กับส่วนหัว Upstash-Cron ตัวอย่างด้านล่างแนะนำให้ QStash เรียก API ทุกนาที
curl -XPOST \
'https://qstash.upstash.io/v1/publish/https://example.com'
-H 'Authorization: Bearer XXX' \
-H "Content-type: application/json" \
-H "Upstash-Cron: * * * * *" \
-d '{ "hello": "world" }' \ เพิ่มเติม
- ลองอีกครั้ง:หาก API ของคุณไม่ตอบสนองด้วยรหัสสถานะความสำเร็จ QStash จะพยายามส่งคำขออีกครั้งเพื่อให้แน่ใจว่าทุกข้อความจะถูกส่ง
- ความล่าช้า:ชะลอการส่งข้อความสูงสุด 90 วัน
- การขจัดข้อมูลซ้ำซ้อน:คุณสามารถป้องกันข้อความที่ซ้ำกันโดยใช้ Deduplication-Id หรือการขจัดข้อมูลซ้ำซ้อนตามเนื้อหาอัตโนมัติ
- ขอลงนาม:API ของคุณต้องเป็นสาธารณะ คุณสามารถตรวจสอบความถูกต้องของคำขอที่เข้ามาแต่ละรายการได้โดยการตรวจสอบลายเซ็น
- JS/TS SDK:REST API นั้นเรียบง่าย แต่หากคุณสร้างบน JS/TS SDK ของเราก็จะง่ายกว่านั้นอีก
คำปิดท้าย
QStash มุ่งหวังที่จะให้บริการส่งข้อความที่ดีที่สุดสำหรับโลกที่ไร้เซิร์ฟเวอร์ นี่เป็นการเปิดตัวครั้งแรกของเรา ดังนั้นเราจึงต้องการคำติชมและการมีส่วนร่วมจากคุณอย่างยิ่ง ตรวจสอบเอกสารประกอบ QStash ติดต่อเราทาง Discord และ Twitter สำหรับความคิดเห็นและข้อเสนอแนะของคุณ..