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 }