คิวข้อความที่ส่งไม่สำเร็จคืออะไร
คิวข้อความที่ส่งไม่สำเร็จ (DLQ) เป็นคิวข้อความชนิดพิเศษที่เก็บข้อความที่ระบบซอฟต์แวร์ไม่สามารถดำเนินการได้ชั่วคราวเนื่องจากข้อผิดพลาด คิวข้อความเป็นส่วนประกอบซอฟต์แวร์ที่สนับสนุนการสื่อสารแบบอะซิงโครนัสในระบบแบบกระจาย ช่วยให้คุณสามารถส่งข้อความระหว่างบริการซอฟต์แวร์ต่างๆ ในปริมาณเท่าใดก็ได้ และไม่จำเป็นต้องให้ตัวรับข้อความพร้อมใช้งานอยู่เสมอ คิวข้อความที่ส่งไม่สำเร็จจะเก็บข้อความที่เกิดข้อผิดพลาดไว้โดยเฉพาะ ซึ่งไม่มีปลายทาง หรือผู้รับข้อความไม่สามารถประมวลผลได้
เหตุใดคิวข้อความที่ส่งไม่สำเร็จจึงมีความสำคัญ
คิวข้อความที่ส่งไม่สำเร็จ (DLQ) มีอยู่เคียงข้างคิวข้อความปกติ พวกเขาทำหน้าที่เป็นพื้นที่เก็บข้อมูลชั่วคราวสำหรับข้อความที่ผิดพลาดและล้มเหลว DLQ ป้องกันไม่ให้คิวต้นทางล้นไปด้วยข้อความที่ยังไม่ได้ประมวลผล
ตัวอย่างเช่น พิจารณาซอฟต์แวร์ที่มีคิวข้อความปกติและ DLQ ซอฟต์แวร์ใช้คิวปกติเพื่อเก็บข้อความที่วางแผนจะส่งไปยังปลายทาง หากตัวรับไม่ตอบสนองหรือประมวลผลข้อความที่ส่ง ซอฟต์แวร์จะย้ายข้อความเหล่านั้นไปยังคิวข้อความที่ส่งไม่สำเร็จ
มีสองสาเหตุที่เป็นไปได้เมื่อข้อความย้ายไปยังไปป์ไลน์ DLQ: เนื้อหาข้อความที่ผิดพลาดและการเปลี่ยนแปลงในระบบของผู้รับ
เนื้อหาข้อความผิดพลาด
ข้อความจะย้ายไปยัง DLQ หากข้อความที่ส่งผิดพลาด สถานะของฮาร์ดแวร์ ซอฟต์แวร์ และเครือข่ายอาจทำให้ข้อมูลที่ส่งเสียหาย ตัวอย่างเช่น การรบกวนของฮาร์ดแวร์ทำให้ข้อมูลบางส่วนเปลี่ยนไปเล็กน้อยระหว่างการส่ง ความเสียหายของข้อมูลที่ไม่คาดคิดอาจทำให้ผู้รับปฏิเสธหรือเพิกเฉยข้อความ
การเปลี่ยนแปลงในระบบของผู้รับ
ข้อความอาจย้ายไปที่ DLQ หากซอฟต์แวร์ที่รับผ่านการเปลี่ยนแปลงที่ผู้ส่งไม่ทราบ ตัวอย่างเช่น คุณสามารถพยายามอัปเดตข้อมูลของลูกค้าโดยส่งข้อความสำหรับ CUST_ID_005 อย่างไรก็ตาม ผู้รับอาจไม่สามารถประมวลผลข้อความขาเข้าได้ เนื่องจากข้อความนั้นลบลูกค้าออกจากฐานข้อมูลของระบบ
ประโยชน์ของคิวข้อความที่ส่งไม่สำเร็จคืออะไร
ต่อไปเราจะพูดถึงประโยชน์ของคิวข้อความที่ส่งไม่สำเร็จ (DLQ)
ลดค่าใช้จ่ายการสื่อสาร
คิวข้อความปกติหรือมาตรฐานจะประมวลผลข้อความจนกว่าระยะเวลาการเก็บรักษาจะหมดอายุ สิ่งนี้ช่วยให้มั่นใจได้ว่าการประมวลผลข้อความจะดำเนินไปอย่างต่อเนื่อง และลดโอกาสที่คิวของคุณจะถูกบล็อกให้เหลือน้อยที่สุด
อย่างไรก็ตาม หากระบบของคุณประมวลผลข้อความนับพัน ข้อความแสดงข้อผิดพลาดจำนวนมากจะเพิ่มค่าใช้จ่ายด้านการสื่อสารและทำให้ระบบสื่อสารเป็นภาระ แทนที่จะพยายามประมวลผลข้อความที่ล้มเหลวจนกว่าจะหมดอายุ คุณควรย้ายไปยังคิวข้อความที่ส่งไม่สำเร็จหลังจากพยายามประมวลผลไม่กี่ครั้ง
ปรับปรุงการแก้ไขปัญหา
หากคุณย้ายข้อความที่ผิดพลาดไปยัง DLQ การดำเนินการนี้จะช่วยให้นักพัฒนามุ่งเน้นที่การระบุสาเหตุของข้อผิดพลาด พวกเขาสามารถตรวจสอบสาเหตุที่ผู้รับไม่สามารถประมวลผลข้อความ ใช้การแก้ไข และพยายามส่งข้อความใหม่
ตัวอย่างเช่น ซอฟต์แวร์ธนาคารอาจส่งใบสมัครบัตรเครดิตหลายพันใบต่อวันไปยังระบบแบ็กเอนด์เพื่อขออนุมัติ จากนั้นระบบแบ็กเอนด์จะรับแอปพลิเคชันแต่ไม่สามารถดำเนินการได้ทั้งหมดเนื่องจากข้อมูลไม่ครบถ้วน แทนที่จะพยายามอย่างไม่มีที่สิ้นสุด ซอฟต์แวร์จะย้ายข้อความไปยัง DLQ จนกว่าทีมไอทีจะแก้ไขปัญหาได้ สิ่งนี้ทำให้ระบบสามารถประมวลผลและส่งข้อความที่เหลือได้โดยไม่มีปัญหาด้านประสิทธิภาพ
เมื่อใดที่คุณควรใช้คิวข้อความที่ส่งไม่สำเร็จ
คุณสามารถใช้คิวข้อความที่ส่งไม่สำเร็จ (DLQ) ได้หากระบบของคุณมีปัญหาต่อไปนี้
คิวที่ไม่เรียงลำดับ
คุณสามารถใช้ประโยชน์จาก DLQ เมื่อแอปพลิเคชันของคุณไม่ต้องพึ่งพาการสั่งซื้อ ในขณะที่ DLQ ช่วยคุณแก้ปัญหาการส่งข้อความที่ไม่ถูกต้อง คุณควรตรวจสอบคิวของคุณและส่งข้อความที่ล้มเหลวอีกครั้ง
คิว FIFO
การเรียงลำดับข้อความมีความสำคัญในคิวเข้าก่อนออกก่อน (FIFO) ทุกข้อความต้องผ่านการประมวลผลก่อนที่จะส่งข้อความถัดไป คิวข้อความที่ส่งไม่สำเร็จDead-letter กับคิว FIFO ได้ แต่การใช้งาน DLQ ของคุณควรเป็น FIFO เช่นกัน
เมื่อใดที่คุณไม่ควรใช้คิวข้อความที่ส่งไม่สำเร็จ
คุณไม่ควรใช้คิวข้อความที่ส่งไม่สำเร็จ (DLQ) กับคิวที่ไม่เรียงลำดับ เมื่อคุณต้องการลองส่งข้อความซ้ำไปเรื่อยๆ ตัวอย่างเช่น อย่าใช้คิวข้อความที่ส่งไม่สำเร็จหากโปรแกรมของคุณต้องรอให้กระบวนการที่ขึ้นต่อกันทำงานหรือพร้อมใช้งาน
ในทำนองเดียวกัน คุณไม่ควรใช้คิวข้อความที่ส่งไม่สำเร็จกับคิวเข้าก่อนออกก่อน (FIFO) หากคุณไม่ต้องการทำลายลำดับข้อความหรือการดำเนินการที่แน่นอน ตัวอย่างเช่น อย่าใช้คิวข้อความที่ส่งไม่สำเร็จกับคำแนะนำในรายการแก้ไขการตัดสินใจ (EDL) สำหรับชุดโปรแกรมตัดต่อวิดีโอ ในกรณีนี้ เมื่อเปลี่ยนลำดับการแก้ไข คุณจะเปลี่ยนบริบทของการแก้ไขที่ตามมา
คิวข้อความที่ส่งไม่สำเร็จทำงานอย่างไร
ส่วนใหญ่แล้วคิวข้อความที่ส่งไม่สำเร็จ (DLQ) จะทำงานเหมือนกับคิวข้อความทั่วไป มันเก็บข้อความที่ผิดพลาดไว้จนกว่าคุณจะประมวลผลเพื่อตรวจสอบสาเหตุของข้อผิดพลาด
ต่อไป เราจะพูดถึงนโยบายไดรฟ์ซ้ำสำหรับ DLQ และวิธีที่ข้อความย้ายเข้าและออกจาก DLQ
การสร้างนโยบายไดรฟ์ซ้ำ
ซอฟต์แวร์จะย้ายข้อความไปยังคิวข้อความที่ส่งไม่สำเร็จโดยอ้างอิงนโยบายไดรฟ์ซ้ำ นโยบายการขับซ้ำประกอบด้วยกฎที่กำหนดว่าเมื่อใดที่ซอฟต์แวร์ควรย้ายข้อความไปยังคิวข้อความที่ส่งไม่สำเร็จ โดยหลักแล้วการกำหนดจำนวนการลองใหม่สูงสุด นโยบายการขับซ้ำจะควบคุมวิธีที่คิวต้นทางและคิวข้อความที่ส่งไม่สำเร็จโต้ตอบกัน
ตัวอย่างเช่น หากนักพัฒนาของคุณตั้งค่าการนับการลองใหม่สูงสุดเป็นหนึ่ง ระบบจะย้ายการส่งที่ไม่สำเร็จทั้งหมดไปยัง DLQ หลังจากพยายามเพียงครั้งเดียว การส่งที่ล้มเหลวบางรายการอาจเกิดจากปัญหาการโอเวอร์โหลดของเครือข่ายหรือซอฟต์แวร์ชั่วคราว สิ่งนี้ส่งข้อความที่ไม่ได้ส่งจำนวนมากไปยัง DLQ เพื่อให้ได้ความสมดุลที่เหมาะสม นักพัฒนาจะปรับจำนวนการลองใหม่สูงสุดให้เหมาะสมเพื่อให้แน่ใจว่าซอฟต์แวร์ทำการลองใหม่ได้เพียงพอก่อนที่จะย้ายข้อความไปยัง DLQ
ย้ายข้อความไปยังคิวข้อความที่ส่งไม่สำเร็จ
ความพยายามส่งระหว่างผู้ส่งและผู้รับอาจล้มเหลวได้จากหลายสาเหตุ:
- ผู้รับไม่สามารถรับข้อความได้เนื่องจากไม่มีอยู่
- ข้อความมีข้อผิดพลาด
- ข้อความเกินขีดจำกัดความยาวของคิวหรือข้อความ ตัวอย่างเช่น ผู้รับบางตัวประมวลผลข้อความที่มีขนาดเกินที่กำหนดไม่ได้
- เวลาที่ข้อความใช้ได้ (TTL) หมดอายุแล้ว TTL คือค่าที่ระบุระยะเวลาที่แพ็กเก็ตข้อมูลหนึ่งๆ ใช้ได้บนเครือข่าย
ย้ายข้อความออกจากคิวข้อความที่ส่งไม่สำเร็จ
เมื่อข้อความย้ายเข้าสู่คิวข้อความที่ส่งไม่สำเร็จ นักพัฒนาซอฟต์แวร์จะตรวจสอบข้อความที่ผิดพลาดเพื่อระบุสาเหตุ ข้อความใน DLQ อาจมีข้อมูลเชิงลึกอันมีค่าเพื่อป้องกันไม่ให้เกิดปัญหาที่คล้ายกันซ้ำอีกในอนาคต หลังจากที่นักพัฒนาวิเคราะห์และแก้ไขปัญหา ระบบจะย้ายข้อความออกจาก DLQ และไปยังคิวต้นทาง สิ่งนี้ทำให้ผู้ส่งสามารถประมวลผลข้อความต่อไปได้
AWS รองรับข้อกำหนดคิวข้อความที่ส่งไม่สำเร็จของคุณได้อย่างไร
Amazon Simple Queue Service (Amazon SQS) มอบแนวทางที่ปรับขนาดได้สำหรับการแลกเปลี่ยนข้อความระหว่างระบบกระจายตามขนาด นักพัฒนาใช้ Amazon SQS เพื่อสร้างเว็บแอปพลิเคชันที่เสถียรด้วยคิวมาตรฐานที่มีการจัดการเต็มรูปแบบและคิวเข้าก่อนออกก่อน (FIFO)
ประโยชน์อื่นๆ ของ Amazon SQS มีดังนี้:
- Amazon SQS ช่วยให้ระบบสร้างคิวข้อความได้ไม่จำกัดจำนวน
- นักพัฒนาสามารถถ่ายโอนข้อความเป็นชุดเพื่อประหยัดค่าใช้จ่าย
- Amazon SQS รองรับการล็อกข้อความ ป้องกันไม่ให้คอมพิวเตอร์หลายเครื่องประมวลผลข้อความเดียวกันพร้อมกัน
เริ่มต้นใช้งาน Amazon Web Services (AWS) โดยสร้างบัญชี AWS วันนี้