У меня есть приложение Laravel, которое может отправлять электронную почту всем пользователям. Теперь я хочу разрешать 200 электронных писем каждые 20 минут, чтобы избежать «нарушения политики» со стороны моего поставщика услуг электронной почты.
Я прочитал это руководство: https://laravel.com/docs/7.x/queues#job -middleware но как я могу реализовать в моей системе?
Я использую redis с Horizon и отправляю сообщения следующим образом:
Notification::send($usersCollection, new EmailMessage());
class EmailMessage extends Notification implements ShouldQueue{
use Queueable;
public function toMail($notifiable)
{...}
}
Я добавил функцию дескриптора, но она не работает, электронные письма отправляются в один go
public function handle()
{
Redis::throttle('email')->allow(1)->every(1000)->then(function () {
// send email to subscriber
logger($this->email);
}, function () {
// could not obtain lock, retry this job in 5 seconds.
return $this->release(5);
});
}