我已经将Redis与Laravel联系起来排队电子邮件,一切都很好...... 但在开发环境中我使用mailtrap.io(免费版)。
问题是,mailtrap每秒只能收到2封电子邮件,所以我从来没有收到排队的所有电子邮件,因为redis发送疯狂的电子邮件......可能是10 / s
有没有办法以某种方式减慢队列速度,使其每秒发送最多2封邮件?
答案 0 :(得分:1)
是的这是一个解决方案,他们被称为工作:) 您可以创建一个文件,专门在Jobs文件夹和类似
的类中发送电子邮件class SendPushNotification extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
protected $pushNotification;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(PushNotification $pushNotification)
{
$this->pushNotification = $pushNotification;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$this->pushNotification->send();
}
}
然后在控制器中调用该类
$this->dispatch(new SendPushNotification($pushNotification))->delay(1);
延迟是几秒钟,您可以创建一个带有数组的构造函数,以接收两个您想要的电子邮件,可能是一些var,而不是.env可以更改每秒更改电子邮件的数量