มาทำ Message Queue ง่ายๆด้วย RabbitMQ กันเถอะ

January 2, 2017

rabbitmq

ตอนฝึกงานอยู่มีโอกาสได้ใช้ Message Queue เยอะเหมือนกันแต่มันเป็น internal lib ที่เค้าเขัยนไว้ ทีนี้มีงานๆนึงที่รับมาแล้วมันต้องใช้ Message Queue ด้วยเพื่อความไวในการทำงาน เลยลองไปศึกษาดูว่าจะทำ Message Queue ยังไงดีนะ สรุปเลยเลือกใช้ RabbitMQ เรามาเริ่มกันเลยดีกว่า

Setup

ผมเป็นติ่ง docker ดังนั้นเราจะใช้ docker รัน RabbitMQ กันเพราะขี้เกียจลงนู่นนี่ลำบาก

เริ่มด้วยคำสั่ง

docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management

แอบติด management มาด้วยเพราะมันมี web-ui ดูได้สะดวก พอรันเสร็จก็ลองเข้าไปที่ http://localhost:8080 แล้ว login ด้วย guest:guest ก็จะได้หน้าตาแบบนี้Screen Shot 2560-01-02 at 3.44.34 PM

ถ้าได้หน้าตาอย่างในรูปด้านบนแปลว่าเราได้ RabbitMQ Server พร้อมที่จะยิงของเข้ามาแล้ว

 

** ใช้ภาษา Ruby บนเว็บ RabbitMQ เองก็มี Tutorials หลากหลายภาษาให้ดูอยู่เหมือนกัน **

Publisher

การที่เราเป็นคนส่งของเข้าไปใน Queue เนี่ยจะเรียกว่า Publisher เราทำได้โดย

 

พอเราลองรัน code ของเราเนี่ย message ของเราก็จะไปโผล่ที่ RabbitMQ Server แล้วโดยเข้าไปดูได้ที่ http://localhost:8080/#/queues (ในรูปที่ขึ้น 2 เพราะผมรัน code ไป 2 รอบนะครับ)

Message เข้า Queue แล้ว

Message เข้า Queue แล้ว

 

พอ Message เข้า Queue ไปแล้วเนี่ยก็ถึงขั้นตอนเอา Message Queue ออกมาใช้ล่ะ

Receiver

ตัวอย่างโค้ดตามนี้เลย

 

จะเห็นว่าแค่เขียนส่งเข้ากับเอา Message ออกมาเนี่ยง่ายแสนง่าย แต่ถ้าจะทำ Message Queue จริงๆยังขาดเรื่อง Priority, Reschedule On Fail, ฯลฯ เยอะแยะมากมาย เอาไว้เดี๋ยวมาต่อโพสต์หน้าครับ

Share and Enjoy

Email
Print