Message Queue คือระบบที่ใช้ในการจัดการและส่งข้อความระหว่างบริการต่างๆ โดยทำงานแบบ Asynchronous คือไม่ต้องรอให้บริการอื่นๆ ตอบกลับทันที ช่วยให้ระบบสามารถทำงานได้อย่างมีประสิทธิภาพและไม่ติดขัดเมื่อมีการประมวลผลที่ยาวนาน.
RabbitMQ คืออะไร ref: https://www.rabbitmq.com
RabbitMQ เป็นระบบ Message Broker ที่ช่วยในการส่งข้อความระหว่างผู้ส่งและผู้รับ โดยใช้โปรโตคอล AMQP (Advanced Message Queuing Protocol)
RabbitMQ ก็เหมือนกับ ไปรษณีย์ ที่ช่วยส่งจดหมายจากเราไปยังปลายทางที่เราต้องการ ในกรณีนี้ เรา คือ Producer (คนส่งจดหมาย) และ บริการอื่น ที่ต้องการรับข้อมูล คือ Consumer (ผู้รับจดหมาย) ส่วน RabbitMQ คือ ไปรษณีย์ ที่รับหน้าที่เก็บจดหมายแล้วส่งไปยังปลายทางที่ถูกต้อง โดยที่บริการอื่นๆ สามารถรับจดหมายไปใช้ได้เมื่อมันพร้อม.
เรามาดู Use case ง่ายๆ ในการใช้ queue
เมื่อผู้ใช้สมัครสมาชิกหรือขอรีเซ็ตรหัสผ่าน ระบบต้องส่งอีเมลยืนยัน แต่หากระบบต้องรอให้การส่งอีเมลเสร็จก่อนที่จะดำเนินการต่อ จะทำให้เกิด latency สูง และหากมี request จำนวนมาก ระบบอาจเกิดการ overload หรือ crash ได้
แล้วเราจะเอาน้องกระต่ายมาช่วยได้ยังไง? RabbitMQ คือ Message Broker ที่ช่วยจัดการการส่งข้อความระหว่างระบบต่างๆ แบบ Asynchronous โดยไม่ให้ระบบหลักต้องรอการประมวลผลเสร็จ เช่น การส่งอีเมลหรือการประมวลผลข้อมูลหนักๆ ซึ่งจะถูกส่งเข้า Queue และให้ Consumer ทำงานในเบื้องหลัง ระบบหลักไม่ต้องรอการดำเนินการเสร็จ ช่วยลด latency และป้องกันไม่ให้เกิดการ overload หรือ downtime เมื่อมีการ request จำนวนมาก
ครั้งหน้าเราจะมาลองดูตัวอย่างการ implement RabbitMQ ตาม Use Case ที่ได้กล่าวไป เพื่อให้เห็นการใช้งานจริง และวิธีการนำไปใช้ในโปรเจกต์ต่างๆ เช่น การส่งอีเมล, การประมวลผลข้อมูลในเบื้องหลัง หรือการสื่อสารระหว่าง Microservices