/** * @param Job $job * @param array $data * * @throws Exception */ public function fire($job, $data) { $this->job = $job; if ($data['test1'] != 1 || $data['test2'] != 2) { throw new Exception("Parameters passed incorrectly" . var_export($data, true)); } if (isset($data['delete'])) { $this->job->delete(); return; } if (isset($data['release'])) { $this->job->release(); return; } }
/** * @param Job $job * @param array $data */ public function fire(Job $job, $data) { $signalId = $data['signalId']; $signalResult = ResultSignal::find($signalId); if ($signalResult == null) { $job->delete(); exit; } $url = $data['url']; $signalSid = $signalResult->signal_sid; $isSend = $this->makeCurl($url, $signalSid); //Если отправлен результат то удаляем задачу и ставим флаг if ($isSend) { $job->delete(); $signalResult->setFlagUrlTrue(); Log::info('Результат отправлен по http.'); } $cnt = $job->attempts(); if ($cnt > 50) { $job->delete(); Log::info('Выполнено ' . $cnt . ' попыток отправить curl. Задача удалена.', $data); exit; } Log::info('Перевыставлена задача, попытка номер ' . $cnt, $data); $job->release(60); }
public function fire(Job $job, $data) { $doSuccess = false; // push to url if ($data['url']) { $curl = new Curl(); $curl->post($data['url'], $data['data']); $doSuccess = $curl->ok(); if (!$doSuccess) { Log::warning('callback.push.url', array('message' => 'callback push failed to ' . $data['url'], 'order' => $data['data']['order'])); } } // push to email if ($data['email']) { Mail::send(array('text' => 'ff-bank-em::demo.email_callback'), $data, function (Message $message) use($data) { $message->to($data['email'])->subject('Bank Emulator Payment Message'); }); $doSuccess = 0 == count(Mail::failures()); if (!$doSuccess) { Log::warning('callback.push.email', array('message' => 'callback push failed', 'order' => $data['data']['order'])); } } // release, if error if ($doSuccess) { Log::info('callback.push', array('order' => $data['data']['order'])); $job->delete(); } else { Log::warning('callback.push', array('order' => $data['data']['order'])); if ($job->attempts() > 10) { $job->delete(); } else { $job->release(60); } } }
/** * @param Job $job * @param array $data */ public function fire(Job $job, array $data) { if (empty($data['url'])) { $job->delete(); Log::info('Не указан url для отправки callback.'); return; } $ch = curl_init($data['url']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $data['merchant_id'] . ':' . $data['merchant_pass']); if ($data['sign'] != '') { curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Api-Signature:' . $data['sign'])); } unset($data['url'], $data['merchant_id'], $data['merchant_pass'], $data['sign']); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $result = curl_exec($ch); $httpError = curl_error($ch); Log::info('Ошибки curl:', array('httpError' => $httpError)); if (!empty($result) && strpos($result, '<result_code>0</result_code>') !== false) { Log::info('Успешно вызван callback с ответом 0', array('result' => $result)); $job->delete(); return; } Log::info('Результат curl:', array('result' => $result)); $cnt = $job->attempts(); if ($cnt > 50) { $job->delete(); return; } Log::info('Перевыставлена задача по отправке curl, попытка номер ' . $cnt, $data); $job->release(60 * $cnt); }
/** * Release the job back into the queue. * * @param int $delay */ public function release($delay = 1) { parent::release($delay); if ($delay < 1) { $delay = 1; } $this->adapter->changeMessageVisibility($this->job->getReceiptHandle(), $delay); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); if (!$this->pushed) { $this->delete(); } $this->recreateJob($delay); }
public function fire(Job $job, $models) { try { foreach ($models as $model) { list($class, $id) = explode(':', $model); $model = $class::findOrFail($id); $model->refreshDoc($model); } $job->delete(); } catch (ModelNotFoundException $e) { $job->release(60); } }
/** * Process a given job from the queue. * * @param \Illuminate\Queue\Jobs\Job $job * @param int $delay * @return void */ public function process(Job $job, $delay) { try { // First we will fire off the job. Once it is done we will see if it will // be auto-deleted after processing and if so we will go ahead and run // the delete method on the job. Otherwise we will just keep moving. $job->fire(); if ($job->autoDelete()) { $job->delete(); } } catch (\Exception $e) { // If we catch an exception, we will attempt to release the job back onto // the queue so it is not lost. This will let is be retried at a later // time by another listener (or the same one). We will do that here. $job->release($delay); throw $e; } }
public function fire(Job $job, $models) { $loggerContainerBinding = $this->config->get('logger', 'menthol.flexible.logger'); $logger = $this->app->make($loggerContainerBinding); foreach ($models as $model) { list($class, $id) = explode(':', $model); $logger->info('Indexing ' . $class . ' with ID: ' . $id); try { $model = $class::findOrFail($id); if (method_exists($model, 'getProxy')) { $model->refreshDoc($model); } } catch (Exception $e) { $logger->error('Indexing ' . $class . ' with ID: ' . $id . ' failed: ' . $e->getMessage()); $job->release(60); } } $job->delete(); }
/** * Release the job back into the queue. * * @param int $delay * * @return void */ public function release($delay = 0) { parent::release($delay); $this->delete(); $this->setAttempts($this->attempts() + 1); $body = $this->payload(); /* * Some jobs don't have the command set, so fall back to just sending it the job name string */ if (isset($body['data']['command']) === true) { $job = unserialize($body['data']['command']); } else { $job = $this->getName(); } $data = $body['data']; if ($delay > 0) { $this->connection->later($delay, $job, $data, $this->getQueue()); } else { $this->connection->push($job, $data, $this->getQueue()); } }
/** * @param Job $job * @param array $data */ public function fire(Job $job, array $data) { if (empty($data['email'])) { $job->delete(); Log::info('Не указан url для отправки callback.'); return; } switch ($data['status']) { case Bill::C_STATUS_EXPIRED: $data['textStatus'] = ' просрочен.'; break; case Bill::C_STATUS_PAID: $data['textStatus'] = ' оплачен.'; break; case Bill::C_STATUS_REJECTED: $data['textStatus'] = ' отменён.'; break; default: $data['textStatus'] = null; } $this->email = $data['email']; $this->billId = $data['bill_id']; $this->textStatus = $data['textStatus']; Mail::send('ff-qiwi-gate::emails.sendCallbackMail', $data, function (Message $message) { $message->to($this->email)->subject('Счёт №' . $this->billId . $this->textStatus); }); $cntSendFails = count(Mail::failures()); if ($cntSendFails == 0) { $job->delete(); Log::info('Почта отправлена.', $data); return; } $cnt = $job->attempts(); if ($cnt > 50) { $job->delete(); return; } Log::info('Перевыставлена задача по отправке почты, попытка номер ' . $cnt, $data); $job->release(60 * $cnt); }
/** * @param DateTime|int $delay */ public function release($delay = 0) { $delay = $this->getSeconds($delay); parent::release($delay); // reject the message. try { $this->amqpQueue->reject($this->amqpMessage->getDeliveryTag()); } catch (\AMQPException $e) { // void for now } $body = json_decode($this->amqpMessage->getBody(), true); $job = $body['job']; $data = $body['data']; // increment the attempt counter if (isset($data['attempts'])) { $data['attempts']++; } else { $data['attempts'] = 1; } if ($delay > 0) { $this->laravelQueue->later($delay, $job, $data, $this->amqpQueue->getName()); } else { $this->laravelQueue->push($job, $data, $this->amqpQueue->getName()); } }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); $this->delete(); $this->database->release($this->queue, $this->job, $delay); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); $this->recreateJob($delay); }
/** * Bury the job in the queue. * * @return void */ public function bury() { parent::release(); $this->pheanstalk->bury($this->job); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); $this->delete(); $this->redis->release($this->queue, $this->job, $delay, $this->attempts() + 1); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); $priority = Pheanstalk::DEFAULT_PRIORITY; $this->pheanstalk->release($this->job, $priority, $delay); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); }
/** * Handle the queue job. * * @param LaravelJob $laravelJob * @param mixed $data */ public function fire(LaravelJob $laravelJob, $data) { $job = null; try { $job = $this->jobs->find($data['job_id']); // Check if the job is valid (not expired and ready). This might // happen on some timing edge cases. if (!$job->ready()) { $laravelJob->delete(); return; } // Look for a task handler $handler = $this->resolver->resolve($job); if ($handler->getSpec() instanceof Spec) { $result = $handler->getSpec()->check($job->getData()); if ($result->failed()) { $laravelJob->delete(); $this->jobs->giveUp($job, 'Task data does not pass Spec.'); return; } } // Execute the handler $this->jobs->started($job, "Task handler started.\n"); $handler->fire($job, $this->scheduler); if ($handler->isSelfDeleting()) { $this->jobs->delete($job->id); } else { $this->jobs->complete($job); } } catch (ModelNotFoundException $e) { // Here we just cancel the queue job since there is no point in // retrying. $laravelJob->delete(); } catch (UnresolvableException $e) { // Here we just cancel the queue job since there is no point in // retrying. $laravelJob->delete(); $this->jobs->giveUp($job, 'Task handler was not found'); } catch (Exception $e) { // If we were not able to find the job, just give up. if (is_null($job)) { $laravelJob->delete(); return; } if ($job->hasAttemptsLeft()) { $this->jobs->release($job); $laravelJob->release(); return; } $this->jobs->fail($job, 'Exception: ' . $e->getMessage()); $laravelJob->delete(); } }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); $this->sqs->changeMessageVisibility(['QueueUrl' => $this->queue, 'ReceiptHandle' => $this->job['ReceiptHandle'], 'VisibilityTimeout' => $delay]); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); $this->redis->deleteAndRelease($this->queue, $this->reserved, $delay); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); parent::delete(); $this->queue->release($this->queue_name, $this->message, $delay); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { $this->job->release($delay); }
/** * Release the job back into the queue. * * @param int $delay * @return void */ public function release($delay = 0) { parent::release($delay); // SQS job releases are handled by the server configuration... }