From c192aac2d101615ce3a64e34b408b129f1f87fb4 Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Fri, 1 Apr 2022 20:41:08 +0800 Subject: [PATCH] feat(consumer): add default timeout in Request new task fix: https://github.com/golang-queue/queue/issues/57 Signed-off-by: Bo-Yi Wu --- consumer.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/consumer.go b/consumer.go index 80b8bad..96af040 100644 --- a/consumer.go +++ b/consumer.go @@ -119,15 +119,24 @@ func (s *Consumer) Queue(task QueuedMessage) error { // Request a new task from channel func (s *Consumer) Request() (QueuedMessage, error) { - select { - case task, ok := <-s.taskQueue: - if !ok { - return nil, ErrQueueHasBeenClosed + clock := 0 +loop: + for { + select { + case task, ok := <-s.taskQueue: + if !ok { + return nil, ErrQueueHasBeenClosed + } + return task, nil + case <-time.After(1 * time.Second): + if clock == 5 { + break loop + } + clock += 1 } - return task, nil - default: - return nil, ErrNoTaskInQueue } + + return nil, ErrNoTaskInQueue } // NewConsumer for create new consumer instance