လွယ်လွယ်ပြောရရင် message queue ဆိုတာ လုပ်စရာအလုပ်တွေကို တန်းစီစောင့်ခိုင်းထားတဲ့ “စာရင်း” ပါ။ အလုပ် လာသမျှကို ချက်ချင်း မလုပ်ဘဲ queue ထဲ ထည့်ထား — အားတဲ့သူက တစ်ခုချင်း ထုတ်ယူလုပ်တယ်။ စာတိုက်ပုံးနဲ့ အတူတူပဲ။

စာတိုက်ပုံးကို စဉ်းစားကြည့်ပါ။ ကိုယ်က စာတစ်စောင် ပုံးထဲ ထည့်လိုက်တယ်။ စာပို့သမား လာယူသွားတယ်။ ကိုယ်နဲ့ စာပို့သမား မျက်နှာချင်းဆိုင် တွေ့စရာ မလိုဘူး — ပုံးက ကြားခံ လုပ်ပေးတယ်။ စာ ၁၀၀ ရောက်လာလည်း ပုံးထဲမှာ တန်းစီစောင့်နေတယ်၊ စာပို့သမားက တစ်စောင်ချင်း ယူသွားတယ်။

Message queue လည်း ဒီအတိုင်းပဲ။ Program တစ်ခုက “ဒီအလုပ် လုပ်ပေးပါ” ဆိုတဲ့ message ကို queue ထဲ ထည့်လိုက်တယ်။ နောက် program (worker) က queue ထဲက တစ်ခုချင်း ထုတ်ယူလုပ်တယ်။ နှစ်ခုလုံး တစ်ချိန်တည်း အလုပ်လုပ်နေစရာ မလိုဘူး။

ဘာလို့ လိုအပ်တာလဲ?

Food delivery app တစ်ခုကို စဉ်းစားကြည့်ပါ။ နေ့လယ် ၁၁ နာရီခွဲ — လူတွေ ထမင်းမှာတဲ့ အချိန်။ တစ်မိနစ်ထဲမှာ order ၅၀၀၀ ဝင်လာတယ်။

Queue မရှိရင် — order တိုင်းကို ချက်ချင်း လုပ်ရမယ်။ ဆာဗာက တစ်ပြိုင်နက် ၅၀၀၀ ကို မနိုင်ဘူး — ကျသွားတယ်။ လူတွေက “app ပျက်နေတယ်” လို့ ဆဲတယ်။

Queue ရှိရင် — order ၅၀၀၀ လုံး queue ထဲ တန်းစီဝင်သွားတယ်။ Worker တွေက တစ်ခုချင်း ထုတ်ယူလုပ်တယ်။ နည်းနည်းကြာမယ်၊ ဒါပေမယ့် တစ်ခုမှ မပျောက်ဘူး၊ ဆာဗာလည်း မကျဘူး။ လူက “order တင်ပြီးပြီ” လို့ ချက်ချင်း အကြောင်းပြန်ရတယ် — နောက်ကွယ်မှာ queue က ဖြည်းဖြည်းချင်း ရှင်းပေးနေတယ်။

ကိုယ်နေ့တိုင်း သုံးနေတဲ့ ဥပမာ — app တစ်ခုမှာ account ဖွင့်ရင် “welcome email ပို့ပေးမယ်” ဆိုတာ queue ထဲ ထည့်လိုက်တာများတယ်။ ကိုယ်က ချက်ချင်း “ဖွင့်ပြီးပြီ” လို့ မြင်ရတယ်၊ email က နောက်မှ ရောက်လာတယ်။

နာမည်ကြီး queue တွေ

RabbitMQ — အသုံးအများဆုံး၊ နားလည်လွယ်
Kafka — data အများကြီး စီးဆင်းတဲ့နေရာ (log, event)
Redis — မြန်မြန်ဆန်ဆန် သုံးချင်ရင်
AWS SQS — Cloud ပေါ်က အဆင်သင့် queue

ဘယ်အချိန်မှာ သုံးသင့်လဲ ဆိုတဲ့ စည်းမျဉ်း ရိုးရိုးလေး —

လူအများ တစ်ပြိုင်နက် သုံးမယ့် အလုပ် (order, booking)
ကြာမယ့်အလုပ် (email ပို့, SMS ပို့, video convert)
“ချက်ချင်း ပြီးစရာ မလို၊ ပျောက်သွားလို့ မဖြစ်” တဲ့အလုပ်

ဒီသုံးခုနဲ့ ကိုက်ရင် queue ထည့်စဉ်းစားသင့်ပြီ။

စာတိုက်ပုံးက စာကို မပျောက်စေသလို၊ message queue က အလုပ်ကို မပျောက်စေဘူး။ နည်းနည်းစောင့်ရပေမယ့် စိတ်ချရတယ် — ဒါက software engineering ရဲ့ အခြေခံ ပညာတစ်ခုပဲ။ 🙂