မှတ်ချက်။ AI ပြောတိုင်းအမှန်မဟုတ်ပါဘူး၊ တခါတလေသူကအမှားတွေပါပြောတက်ပါတယ်။ ကိုယ်ပိုင်စဥ်းစားဆင်ခြင်ဆုံးဖြတ်ပါ။
PHP/Laravel မှာဆို queue worker ဆိုပီးနှေးတဲ့ task တွေကို queue ထဲထည့်ပီး worker နဲ့ process လုပ်တယ်။ အဲ့လိုမျိုးကို golang goroutine နဲ့နမူနာတခုလောက်လုပ်ပြပေးပါ။
ဟုတ်ကဲ့။ Golang မှာ goroutine သုံးပြီး queue worker လုပ်ဆောင်ချက်ကို အောက်ပါအတိုင်း နမူနာ ရေးပြပေးပါမယ်။
package main import ( "fmt" "time" ) // Task ဆိုတဲ့ struct ကို သတ်မှတ်ပါတယ် type Task struct { ID int Name string } // Queue ကို channel အနေနဲ့ သတ်မှတ်ပါတယ် var queue = make(chan Task, 100) // worker function func worker(id int) { for task := range queue { fmt.Printf("Worker %d is processing task: %d - %s\n", id, task.ID, task.Name) time.Sleep(time.Second) // နှေးတဲ့ task ကို simulate လုပ်ဖို့ } } func main() { // worker 3 ခု စတင်ပါတယ် for i := 1; i <= 3; i++ { go worker(i) } // task တွေကို queue ထဲ ထည့်ပါတယ် for i := 1; i <= 10; i++ { task := Task{ ID: i, Name: fmt.Sprintf("Task %d", i), } queue <- task } // main goroutine ကို ခဏရပ်ထားပါတယ် time.Sleep(time.Second * 15) }
ဒီ code မှာ:
Task
queue
worker
main
ဒီ နမူနာမှာ goroutine တွေက PHP/Laravel မှာလို queue worker တွေလို အလုပ်လုပ်ပါတယ်။ Task တွေကို parallel process လုပ်နိုင်ပြီး၊ ပြီးသွားတဲ့ task နေရာမှာ နောက် task တွေကို ဆက်လုပ်နိုင်ပါတယ်။