ทำไมต้องใช้ Queue ? หากระบบไหนที่มีแนวโน้มว่าจะเพิ่มปริมาณผู้ใช้งานที่มากขึ้นเรื่อย ๆ แน่นอนว่าจะต้องมีการจัดลำดับการทำงานของระบบ เพื่อให้ระบบนั้นไม่รับโหลดมากจนเกินไป เพื่อแบ่งเบาภาระการทำงานของเซิฟเวอร์ อีกอย่างคือเพื่อจัดการจำนวนที่แน่นอนของการทำงาน ตัวอย่างเช่น ต้องการให้ส่งอีเมล์ภายในหนึ่งชั่วโมงให้ถึงลูกค้าแค่ 10,000 รายแค่นั้น อะไรทำนองนั้น
เริ่มกันเลย สำหรับคนที่ยังไม่ติดตั้ง Laravel 5 Framework ให้ทำการติดตั้งให้เรียบร้อย วิธีการติดตั้ง
คลิ๊กที่นี่ ในองค์ประกอบการทำงาน Queue laravel มีอยู่ด้วยกันหลัก ๆ 4 ส่วนด้วยกันคือ
- ส่วนรับหน้าที่การทำงาน [Input JOB]
- เป็นส่วนรับคำสั่งเริ่มต้นทั้งหมดของกระบวนการโดยส่วนมากจะถูกวางไว้ที่ Controller เป็นหลัก หรือบางทีอาจเขียนผ่าน Global route เลยก็ได้ แต่หน้าที่มันก็คือเป็นจุดเริ่มต้นของกระบวนการทำงานที่ถูกวางไว้แล้วนั่นเอง
- ส่วนทำงาน[Process JOB]
- เป็นส่วนของ business logic หรือการต่อ 3rd party API หรือ บันทึกข้อมูล แต่มีสิ่งที่คำนึงก็คือมันต้องสืบทอดคลาสมาจาก QueueJob ของ Laravel เท่านั้น
- ส่วนคำสั่งเพื่อให้ JOB ทำงาน
- เป็นการสั่งงานเพื่อ Run Job ที่อยู่ภายใน Queue ซึ่งจะสามารถทำได้แค่ประเภทเก็บคำสั่งไว้ก่อนทำงาน
- ตัวอย่างคำสั่ง ผ่าน command line
- php artisan queue:listen --queue=queueName [basic run queue]
- php artisan queue:listen --queue=high,low [set priority queue]
- php artisan queue:listen --timeout=seconds [set time out]
- ส่วนเก็บคำสั่งการทำงาน
- ระบบการเก็บคำสั่งของ Laravel มีอยู่สองประเภทคือ สั่งให้ทำงานเลยเรียกอีกอย่างหนึ่งว่า sync และอีกอย่างคือเก็บคำสั่งไว้ก่อนค่อยทำงานทีหลัง
- การเก็บคำสั่งของ Queue สามารถทำได้หลายรูปแบบเช่น
- Database
- Redis
- Sync
- Beanstalkd
- Sqs
- Iron
เอาล่ะตอนนี้ก็รู้ถึงเรื่อง Queue แล้ว บทต่อไปจะกล่าวถึงการสร้าง Queue อย่างง่ายไปถึงขั้นยาก ค่อย ๆ ไป รอติดตามชมกันน่ะครับ
0 ความคิดเห็น:
แสดงความคิดเห็น