/** * Retrieves a queue worker * * @param \josegonzalez\Queuesadilla\Engine\Base $engine engine to run * @param \Psr\Log\LoggerInterface $logger logger * @return \josegonzalez\Queuesadilla\Worker\Base */ public function getWorker($engine, $logger) { $worker = parent::getWorker($engine, $logger); $worker->attachListener('Worker.job.exception', function ($event) { $exception = $event->data['exception']; $exception->job = $event->data['job']; $sentryHandler = new SentryHandler(); $sentryHandler->handle($exception); }); $worker->attachListener('Worker.job.success', function ($event) { ConnectionManager::get('default')->disconnect(); }); $worker->attachListener('Worker.job.failure', function ($event) { $failedJob = $event->data['job']; $failedItem = $failedJob->item(); $options = ['queue' => 'failed', 'failedJob' => $failedJob]; Queue::push($failedItem['class'], $failedJob->data(), $options); ConnectionManager::get('default')->disconnect(); }); return $worker; }
/** * Push a single job onto the queue. * * @param string $callable a job callable * @param array $args an array of data to set for the job * @param array $options an array of options for publishing the job * @return bool the result of the push */ protected function push($callable, $args = [], $options = []) { return Queue::push($callable, $args, $options); }