2016-04-05 5 views
1

У меня есть вопросСобытия и работы PHP Laravel очереди в

У меня есть простая система, где User создает Booking После того как пользователь создал номер, по электронной почте и SMS будет отправлено пользователю.

У меня есть хотя несколько способов приблизиться к этому

  1. После бронирование было сделано, отправлять электронную почту и SMS (блокирование)
  2. После бронирование было сделано, Огонь событие, которое queueable и имеет двух слушателей. Один отправляет электронное письмо. Второй отправляет SMS.
  3. После того, как был сделан заказ, пожар и событие, в котором будет стоять 2 задания, отправивших электронное письмо, второе отправит смс.

Вариант 1 является недействительным, так как он блокируется и не имеет повторения для моего поставщика транзакций электронной почты или поставщика SMS.

Вариант 2 является выполнимым

Вариант 3 является выполнимым

В будущем я хочу, чтобы иметь возможность отправлять один и тот же адрес электронной/смс без события BookingConfirmation, так что я в конечном итоге нужны рабочие который может быть в очереди без события.

Или это часть события только накладные расходы, и я могу поставить очередь на задания непосредственно с контроллера вместо того, чтобы уволить событие?

Я в основном спрашиваю, следует ли вообще использовать события или просто использовать вакансии?

Спасибо!

+0

Это больше для [Обзоры кодов] (http://codereview.stackexchange.com/) – ash

+0

Я бы пошел на то, чтобы положить вещи в очередь, и когда работник возьмет вещи, когда они доступны – ajtrichards

+0

Заинтересованы в том, мероприятие. Вы отправляете событие еще раз, когда удаляете сообщение о событии из очереди? – XuDing

ответ

1

События полезны, потому что вы можете запускать одно событие и выполнять несколько действий независимо друг от друга.

Это означает, что если в будущем вы хотите иметь третье действие, если вы используете события, вы можете просто добавить другой обратный вызов, между тем, если вы пропускаете события и напрямую помещаете задания в очередь, вы должны изменить чтобы поставить третье действие.

Удобство заключается в том, что вам не нужно изменять какой-либо метод, чтобы добавить новую функциональность.

В конце концов, это зависит от разработчика. События обеспечивают лучший код между каждым действием. Но производительность мудрая, я думаю, что это то же самое.

0

Я поставил все задачи как задания в очередь, затем вы запускаете события (последнюю строку задания), когда задание выполнено, чтобы вы могли выполнять любые последующие действия или действия, которые вы хотите сделать, чтобы сообщить об использовании ,

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

Система, которую я использую в данный момент, например, использует событие для запуска следующего задания, но при других задачах я запускаю сразу несколько заданий.

Например.
пользователь клики забронированы.
диспетчерской работа электронной
работа электронной почты в очереди
Работы электронной почты обрабатывается
работа по электронной почте отправляет событие
событие подобрано слушателем
Слушатель диспетчерской Работы SMS
Работы SMS находится в очереди
Работы SMS обрабатывается
Работа SMS отправляет событие
Событие, полученное слушателем
все, что вы хотите сделать ...

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