มาทำ Queue ผ่าน SQS ของ AWS กัน Part Producer+Consumer End
จากบทความเดิมที่แล้วได้ทำส่วนของ Producer ไปวันนี้จะมาพูดของส่วนตัว Consumer สามารถดูบทความเกี่ยวกับ Producer ได้ที่นี่กดเลย
สิ่งที่ต้องทำมาก่อนเริ่มบทความนี้
- สร้างตัว SQS
- สร้าง Role ให้ตัว API Gateway เข้าถึง SQS ได้
- ทำ API Gateway
หลังจากเราทำตัว Producer เรียบร้อยแล้วมาเริ่มขั้นตอนการทำ Consumer ได้เลย
- ไปที่ IAM เพื่อที่จะสร้าง User ไว้สำหรับเอา Token มาใช้ให้ตัว Backend มีการเข้าถึง SQS
2.ต่อไปก็จะเป็นการ Code โดยผมจะใช้ Golang เพื่อมาทำ Consumer หรือ Poll เพื่อส่งไปที่ต่างๆ
สิ่งที่ต้องเตรียม
- file .env
โดยข้างใน ENV จะประกอบไปด้วย
TOKEN , SECRET จากที่เราสร้างไปเมื่อซักครู่ REGION ก็น่าจะ ap-southeast-1 กันอยู่แล้วนอกจากจะไม่ได้อยู่ไทย PORT เลือกตามใจชอบ URL_SQS ไปเอาที่ตัว SQS ได้เลย ส่วน URL GATEWAY ก็ไปเอาที่เราสร้างเมื่อตอนบทความเดิมคลิก
มาดูส่วนของ Source Code กันจะอธิบายไปเป็นส่วนๆกันนะครับ
ส่วนนี้เหมือนบทความเดิมคือตัว Producer แต่จากเรายิงไปตรงๆเราจะให้มาผ่าน API แล้วยิงเข้าไป
ส่วนนี้คือตัว Connect SQS โดยเราใช้ได้เซทค่าต่างๆใน .env เรียบร้อยแล้ว
ส่วนนี้คือตัว Poll Message ลงมาจาก SQS โดน QueryUrl คือ Path ตัส SQS
ส่วน MaxNumberOfMessages คือเราจะอนุญาติให้ดึง Queue มามากสุดได้เท่าไหร่ซึ่ง MAX ที่ 10
ส่วนตัวนี้คือตัวลบ Message หลังจากเรา Get Message แล้วทำอะไรกับมันเสร็จก็ลบออกจาก Queue ได้เลย
ส่วนนี้เป็น API ที่เราจะทำ Producer เพื่อส่ง Message ไปเก็บใน Queue โดยจะสมมุติว่าให้ API เส้นนี้เป็น Webhook ที่รับ Transactions จาก Payment
ส่วนนี้เป็น API ที่เราจะทำ Producer เพื่อส่ง Message ไปเก็บใน Queue โดยจะสมมุติว่าให้ API เส้นนี้เป็น Webhook ที่รับได้จาก event อะไรก็ได้ไม่ว่าจะสร้างขึ้นมาเพื่อให้เห็นถึงความแตกต่างว่า Producer เส้นเดียวจะให้มันมีกี่ Message กี่แบบในนั้นก็ได้ แต่ถ้าต่างกันเกินไปควรแยกเส้น SQS นะครับ
ส่วนตัวนี้ตรงๆเลยคือ API Consumer ดึงค่าจากตัว SQS โดยจะเห็นว่าจะมีการ ConnectSQS() ก่อน จากนั้นก็จะใช้ While loop และจะมีการไปดึง ConsumerMessage() หลังจากนั้นก็จะมา for loop message ว่าได้ออกมาเท่าไหร่ และจะทำการ Check Type ว่า Type อะไรแล้วอยากให้ทำอะไรหรือให้ไป Function ไหนก็ใส่ไปได้เลย หลังจาก ทำเสร็จก็จะทำการลบ Message ออกจาก Queue
ลองมา Run แล้วดูที่ผม Print ไว้ดีกว่าครับ
ก็จบไปแล้วนะครับสำหรับเรื่อง Queue ส่วนตัวที่ใช้ SQS เพราะบริษัทใช้ AWS เป็นหลักแต่หลักการทำงานของแต่ละเจ้าก็จะคล้ายๆ หรือ เหมือนกันหมด โดยบทความนี้น่าจะเป็นประโยชน์ไม่มากก็น้อยหวังว่าทุกคนจะเอาไปพลิกแพลงใช้ได้สนุกและหลากหลายนะครับ ข้างต้นเป็นวิธีเขียนวิธีนึงเท่านั้นนะครับเพื่อให้เห็นภาพ
ขอให้ชีวิต Dev มีแต่ความสุขครับอย่าไปเครียด เมื่อมีความเครียดจะ Dev ไม่สนุกอีกต่อไปเคยผ่านมาแล้ว ….คำคมก็มา 555555
รอติดตามผลงานต่อไปได้เลยนะครับ
( CR. ธำรงค์ ไชยวงค์ )