慢下Laravel工作人员

时间:2017-02-21 13:18:04

标签: laravel redis queue

我已经将Redis与Laravel联系起来排队电子邮件,一切都很好...... 但在开发环境中我使用mailtrap.io(免费版)。

问题是,mailtrap每秒只能收到2封电子邮件,所以我从来没有收到排队的所有电子邮件,因为redis发送疯狂的电子邮件......可能是10 / s

有没有办法以某种方式减慢队列速度,使其每秒发送最多2封邮件?

1 个答案:

答案 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可以更改每秒更改电子邮件的数量