/**
  * @param $command
  * @param callable $next
  * @return string
  */
 public function execute($command, callable $next)
 {
     if ($command instanceof QueuedCommand && !$command->isRunningInQueue()) {
         $queueName = $command->getQueueName();
         $delay = $command->getDelay() !== null ?: $this->delay;
         if (!$queueName) {
             if ($this->defaultQueueName) {
                 $queueName = $this->defaultQueueName;
             } else {
                 $queueName = get_class($command);
             }
         }
         return $this->queue->push(['serializer' => $this->serializer, 'object' => call_user_func($this->serializer[0], $command)], $queueName, $delay);
     }
     return $next($command);
 }
 /**
  * @param $job
  */
 protected function delete($job)
 {
     $this->queue->delete(['queue' => $job['queue'], 'body' => Json::encode(['id' => $job['id'], 'body' => $job['body']])]);
     Console::output("Job ID#{$job['id']} was deleted from queue");
 }