laravel redis::节流通知

sy5wg1nm  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(235)

我有一个laravel应用程序,可以发送电子邮件给所有用户。现在我想允许200电子邮件每20分钟,以避免“违反政策”从我的电子邮件供应商。
我读过这个指南:https://laravel.com/docs/7.x/queues#job-但是如何在我的系统中实现中间件呢?
我将redis与horizon结合使用,并通过以下方式发送消息:

Notification::send($usersCollection, new EmailMessage());

class EmailMessage extends Notification implements ShouldQueue{
        use Queueable;

        public function toMail($notifiable)
        {...}

}

我已经添加了一个处理功能,但它不工作,电子邮件是在一次发送

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);
    });
  }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题