public function consume($queueAlias, $timeout = 0)
    {
        $queues = is_array($queueAlias)
            ? $this
                ->queueAliasResolver
                ->getQueues($queueAlias)
            : $this
                ->queueAliasResolver
                ->getQueue($queueAlias);

        $payloadArray = $this
            ->redis
            ->blPop(
                $queues,
                $timeout
            );

        if (empty($payloadArray)) {
            return [];
        }

        list($givenQueue, $payloadSerialized) = $payloadArray;
        $payload = $this->serializer->revert($payloadSerialized);
        $givenQueueAlias = $this
            ->queueAliasResolver
            ->getQueueAliasByQueueName($givenQueue);

        /*
         * Dispatching consumer event...
         */
        $consumerEvent = new RSQueueConsumerEvent(
            $payload,
            $payloadSerialized,
            $givenQueue,
            $this->redis
        );

        $this
            ->eventDispatcher
            ->dispatch(RSQueueEvents::RSQUEUE_CONSUMER, $consumerEvent);

        return [$givenQueueAlias, $payload];
    }