2016-03-22 3 views
0

Я использую Laravel 4.2 и IronMQ2. По какой-то причине он случайно отправляет задания дважды. В моей почтовой программе, у меня есть:IronQueue отправляет задания дважды

Queue::push('[email protected]', ['email' => $email, 'subject' => $subject, 'view' => $view, 'data' => $data, 'attachment' => $attachment]); 

Я могу сказать, что это посылает несколько раз, войдя внутрь моего MailController, прямо над $job->delete() вызова:

[2016-03-22 06:08:02] production.INFO: [MAIL LOGGING] Logging for job 6264815783870079319 [] [] - Duplicate 1 
[2016-03-22 06:08:02] production.INFO: [MAIL LOGGING] Logging for job 6264815783870079319 [] [] - Duplicate 1 
[2016-03-22 06:08:03] production.INFO: [MAIL LOGGING] Logging for job 6264815783870079316 [] [] - Duplicate 2 
[2016-03-22 06:08:03] production.INFO: [MAIL LOGGING] Finish job for 6264815783870079319 [] [] - End duplicate 1 
[2016-03-22 06:08:03] production.INFO: [MAIL LOGGING] Logging for job 6264815783870079316 [] [] - Duplicate 3 
[2016-03-22 06:08:03] production.INFO: [MAIL LOGGING] Finish job for 6264815783870079316 [] [] - End duplicate 2 
[2016-03-22 06:08:04] production.INFO: [MAIL LOGGING] Finish job for 6264815783870079316 [] [] - End duplicate 3 
[2016-03-22 06:12:47] production.INFO: [MAIL LOGGING] Logging for job 6264815783870079319 [] [] - Duplicate 1 
[2016-03-22 06:12:48] production.INFO: [MAIL LOGGING] Finish job for 6264815783870079319 [] [] - End duplicate 1 
[2016-03-22 06:48:52] production.INFO: [MAIL LOGGING] Logging for job 6264826778986309904 [] [] - Duplicate 4 
[2016-03-22 06:48:52] production.INFO: [MAIL LOGGING] Logging for job 6264826778986309904 [] [] - Duplicate 4 
[2016-03-22 06:48:52] production.INFO: [MAIL LOGGING] Logging for job 6264826778986309902 [] [] - Duplicate 5 
[2016-03-22 06:48:53] production.INFO: [MAIL LOGGING] Finish job for 6264826778986309902 [] [] - End Duplicate 5 
[2016-03-22 06:48:53] production.INFO: [MAIL LOGGING] Finish job for 6264826778986309904 [] [] - End duplicate 4 
[2016-03-22 07:54:12] production.INFO: [MAIL LOGGING] Logging for job 6264843610963505825 [] [] - Not duplicated 
[2016-03-22 07:54:12] production.INFO: [MAIL LOGGING] Logging for job 6264843142812137221 [] [] - Not duplicated 
[2016-03-22 07:54:12] production.INFO: [MAIL LOGGING] Finish job for 6264843610963505825 [] [] 
[2016-03-22 07:54:13] production.INFO: [MAIL LOGGING] Finish job for 6264843142812137221 [] [] 

Как вы можете видеть, это не все рабочие места , а те, которые дублируются, выполняются за одну секунду. Есть ли способ предотвратить это? Это вызывает появление писем несколько раз.

ответ

0

Одним из вариантов является переход на IronMQ V3. Это обновленная очередь с улучшением стабильности и производительности.

Поскольку IronMQ v2 жестко закодировано в Laravel 4.2 вам нужно сделать следующее:

  • Обновление IronMQ версии в composer.json: "железо-ю/iron_mq": "4. *";
  • Обновление хост в приложение/Config/queue.php, т.е. mq-aws-us-east-1-1.iron.io вместо mq-aws-us-east-1.iron.io (mq-aws-eu-west-1-1.iron.io вместо mq-aws-eu-west-1.iron.io);
  • Перенесите свой push_queue в соответствующий кластер V3 (us-east или eu-west);
  • В vendor\laravel\framework\src\Illuminate\Queue каталоге заменить IronQueue.php, IronJob.php и IronConnector.php файлы с общим мной:
    https://onedrive.live.com/redir?resid=4DBE0885AEDA52FD!106&authkey=!AIr18HPOvqv6DE4&ithint=file%2czip
+0

Спасибо, я боялся. Я не хочу изменять что-либо в каталоге поставщика, так как это потребует отслеживания его в любое время, когда эти файлы будут изменены при обновлении композитора. Мы в конце концов перейдем к Laravel 5, поэтому мы подождем до тех пор, пока не переместимся на V3. Тем временем я отслеживаю задания, чтобы игнорировать повторяющиеся отправки. – aynber

Смежные вопросы