From 64bee3c59fd745516f741864fdc1cebbd651ad3f Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Mon, 6 Jan 2025 13:20:48 +0300 Subject: [PATCH] fix --- app/routers/take.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/routers/take.go b/app/routers/take.go index 84ea8b7..1f3d05c 100644 --- a/app/routers/take.go +++ b/app/routers/take.go @@ -1,8 +1,11 @@ package routers import ( + "fmt" "net/http" tasks "queues-go/app/storage/mongo/collections" + "queues-go/app/storage/redis" + "time" ) type TaskResponse struct { @@ -17,17 +20,17 @@ type TakeResponse struct { func Take(r *http.Request) (interface{}, int) { queue := r.Header.Get("queue") - // mutex := redis.Sync.NewMutex(fmt.Sprintf("lock_queues_%s", queue)) - // for { - // err := mutex.Lock() - // if err != nil { - // time.Sleep(time.Millisecond * 5) - // } else { - // break - // } - // } + mutex := redis.Sync.NewMutex(fmt.Sprintf("lock_queues_%s", queue)) + for { + err := mutex.Lock() + if err != nil { + time.Sleep(time.Millisecond * 5) + } else { + break + } + } task, err := tasks.Take(queue) - // mutex.Unlock() + mutex.Unlock() if err != nil { return nil, http.StatusInternalServerError }