2015-11-12 3 views
3

Я пытался использовать очередь для каждого пользовательского регистра и отправлять электронное письмо им для проверки.Очередь Laravel с использованием Beanstalkd Failing

Я делаю это успешно с использованием Laravel 5.1 Я просто блуждаю, как я могу остановить текущую очередь, если у меня возникла ошибка, а затем, когда я исправлю это, я перезапустил задание из последней очереди ?.

Как об ошибке, как это:

[InvalidArgumentException] 
View [emails.versify_email] not found. 



[InvalidArgumentException] 
View [emails.versify_email] not found. 



[InvalidArgumentException] 
View [emails.versify_email] not found. 

Я пытался в усадьбу с помощью:

public function failed(){ 
    //I've tried send email but it not sending 
} 

или AppServiceProvider

Queue::failing(function ($connection, $job, $data) { 
     $user ='[email protected]mail.com'; 
     Mail::send('emails.fail_queue', ['user' => $user], function ($m) use  ($user) { 
      $m->subject('Failing:' . $user) 
       ->to($user); 
     }); 
    }); 

Ни один из них работает. Что мне делать, если это так, когда это произошло на производстве ?.

+0

Под «остановкой текущей очереди, если я получил ошибку», вы имеете в виду остановку текущего задания и повторную попытку позже? Или вы хотите остановить всю очередь (и все задания в ней)? – Atrakeur

+0

остановка текущего задания и повторная попытка позже. благодаря – ssuhat

ответ

1

Когда исключение выбрасывается из обработчика, Laravel пытается вернуть задание обратно в очередь, если он явно не удален.

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Queue/Worker.php#L198-L227

Вы можете использовать параметр $ задержки положить обратно в очередь с задержкой. Или лучше просто хоронить работу самостоятельно, если вы сможете обнаружить проблему.

$this->job->bury() 
Смежные вопросы