/**
  * Bootstrap the application services.
  *
  * @return void
  */
 public function boot()
 {
     if (config('queue.default') != 'sync') {
         Queue::after(function (JobProcessed $event) {
             $job = '';
             if (isset($event->data['data']['command'])) {
                 $job = unserialize($event->data['data']['command']);
             } else {
                 if (isset($event->data['data']['data'])) {
                     $job = unserialize($event->data['data']['data']);
                 }
             }
             if (!empty($job)) {
                 $id = sha1(serialize($job));
             } else {
                 if (isset($event->data['data'])) {
                     $id = md5(json_encode($event->data['data']));
                 }
             }
             $queueJob = $this->client()->get($id);
             if ($queueJob) {
                 $queueJob = $queueJob->finish();
                 $this->client()->put($queueJob->queueId, $queueJob->toJson());
             }
         });
         Queue::before(function (JobProcessing $event) {
             $job = '';
             if (isset($event->data['data']['command'])) {
                 $job = unserialize($event->data['data']['command']);
             } else {
                 if (isset($event->data['data']['data'])) {
                     $job = unserialize($event->data['data']['data']);
                 }
             }
             if (!empty($job)) {
                 $id = sha1(serialize($job));
             } else {
                 if (isset($event->data['data'])) {
                     $id = md5(json_encode($event->data['data']));
                 }
             }
             $queueJob = $this->client()->get($id);
             if ($queueJob) {
                 $queueJob = $queueJob->initialization($event->job, $event->data);
                 $this->client()->put($queueJob->queueId, $queueJob->toJson());
             } else {
                 $queueJob = QueueJob::make($id, $event->data);
                 $this->client()->put($queueJob->queueId, $queueJob->toJson());
             }
         });
         Queue::failing(function ($event) {
             // $event->connectionName
             // $event->data
             // $event->data
         });
     }
 }
 public function start()
 {
     if ($this->qid) {
         $queueJob = QueueJob::get($this->qid);
         $queueJob = $queueJob->initialization();
         Redis::LSET(config('queue-managers.name'), $queueJob->qid, $queueJob->toJson());
     }
     if ($this->qid && $queueJob) {
         $index = Redis::LLen(config('queue-managers.name'));
         $this->qid = $index++;
         $queueJob = QueueJob::make($this->qid);
         Redis::LSET(config('queue-managers.name'), $this->qid, $queueJob->toJson());
     }
 }