คิวข้อความที่ส่งไม่สำเร็จคืออะไร

คิวข้อความที่ส่งไม่สำเร็จ (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 วันนี้

ขั้นตอนถัดไปบน AWS

ดูแหล่งข้อมูลที่เกี่ยวกับผลิตภัณฑ์เพิ่มเติม
สำรวจข้อเสนอการผสานแอปพลิเคชันฟรี 
ลงชื่อสมัครใช้บัญชีฟรี

รับสิทธิ์การเข้าถึง AWS Free Tier ได้ทันที

ลงชื่อสมัครใช้งาน 
เริ่มต้นการสร้างในคอนโซล

เริ่มต้นสร้างในคอนโซลการจัดการของ AWS

ลงชื่อเข้าใช้