程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 redis + horizo​​n 时,laravel 限速作业的工作原理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 redis + horizo​​n 时,laravel 限速作业的工作原理?

开发过程中遇到使用 redis + horizo​​n 时,laravel 限速作业的工作原理的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 redis + horizo​​n 时,laravel 限速作业的工作原理的解决方法建议,希望对你解决使用 redis + horizo​​n 时,laravel 限速作业的工作原理有所启发或帮助;

我目前正在开发一个应用程序,其中有很多在后台运行的作业,例如发送通知电子邮件。现在我需要对作业进行速率限制,以防止电子邮件服务提供商指责我们的帐户在几秒钟内发送过多电子邮件。我的解决方案是使用 redis、spatie job rate-limiter 和 laravel horizon 来管理排队作业。

这里是带有 spatIE 作业速率限制器的试用提醒作业的示例处理方法。

public function handle()
{
    $user = User::find($this->user->ID);
    $user->trial_reminder_sent = true;
    $user->save();

    if ($this->user->languagE) {
        Mail::to($this->user)->locale($this->user->languagE)->send(new SendTrialReminder($this->user));
    } else {
        Mail::to($this->user)->send(new SendTrialReminder($this->user));
    }
}

public function mIDdleware()
{
    $ratelimitedMIDdleware = (new Ratelimited())
        ->allow(5)
        ->everySeconds(10)
        ->releaseAfterSeconds(5)
        ->releaseAfterBACkoff($this->attempts());

    return [$ratelimitedMIDdleware];
}

这是地平线队列工作器配置:

'local' => [
        'supervisor-1' => [
            'connection' => 'redis','queue' => [
                'weekly_survey','notification','API','default'
            ],'balance' => 'auto','processes' => 6,'trIEs' => 5,// 10 seconds under the queue's retry_after to avoID overlap
            'timeout'       => (60 * 10) - 10,// Just under 10 min
        ],

redis配置:

'redis' => [
        'driver' => 'redis','connection' => 'default','queue' => env('redis_QUEUE','default'),'retry_after' => (60 * 10),'block_for' => null,],

现在,每次我触发 trial:reminder 命令 php artisan trial:reminder 时,它都会在应用日志 worker.log 上分派作业而不会出现问题。但是,在地平线仪表板上有 6 个失败的作业。看看这里的截图horizon dashboard

这是应用内 worker.log 文件中的结果。

[2021-04-29 03:45:19][7] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][7] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][12] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][12] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][17] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][17] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][24] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][24] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][8] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][8] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][10] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][10] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][11] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][11] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][14] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][14] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][18] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][18] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][20] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][20] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][22] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][22] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][25] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][25] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][28] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][28] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][31] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][31] Processed:  App\Jobs\TrialReminder 
[2021-04-29 03:45:19][4] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][3] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][2] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][6] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][6] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][9] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][9] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][13] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][13] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][15] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][15] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][16] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][16] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][19] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][19] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][21] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][21] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][23] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][23] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][26] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][26] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][27] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][27] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][29] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][29] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:20][30] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:20][30] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:19][1] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:19][5] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:22][3] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:22][2] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:22][1] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:22][5] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:22][4] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][11] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][11] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][25] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][25] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][29] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][29] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][24] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][24] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][20] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][20] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][15] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][16] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][9] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][9] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][7] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][7] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][23] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][23] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][26] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][26] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][22] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][22] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][13] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][13] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][12] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][12] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][14] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][14] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][8] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][8] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][19] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][19] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][10] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][10] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][31] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][31] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][28] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][28] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][27] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][27] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][30] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][30] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][21] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][21] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:35][6] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][18] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:35][17] Processing: App\Jobs\TrialReminder
[2021-04-29 03:45:37][16] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:37][15] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:37][17] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:37][18] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:45:37][6] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:10][31] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:10][29] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:10][28] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:10][23] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:10][25] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][24] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][24] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][20] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][20] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:10][11] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][11] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][27] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][27] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][26] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][26] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][13] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][13] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][30] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][30] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][9] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][9] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][12] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][12] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][14] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][14] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][8] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][8] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][19] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][19] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][21] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][21] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][10] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][10] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][7] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][7] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:11][22] Processing: App\Jobs\TrialReminder
[2021-04-29 03:46:11][22] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:12][31] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:13][28] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:12][23] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:12][29] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:46:12][25] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][13] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][11] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][24] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][24] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][20] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][20] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][10] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][10] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][26] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][26] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][14] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][14] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][8] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][8] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][22] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][22] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][19] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][19] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][21] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][21] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][7] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][7] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][12] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][12] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:26][9] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][27] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:26][30] Processing: App\Jobs\TrialReminder
[2021-04-29 03:47:28][13] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:28][9] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:28][11] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:28][30] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:47:28][27] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:01][26] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:01][12] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:01][8] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:01][14] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:01][24] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:02][19] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:02][19] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:02][21] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:02][21] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:02][22] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:02][22] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:02][20] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:02][20] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:02][7] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:02][7] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:02][10] Processing: App\Jobs\TrialReminder
[2021-04-29 03:50:02][10] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:04][24] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:03][26] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:03][14] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:04][12] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:50:04][8] Processed:  App\Jobs\TrialReminder
[2021-04-29 03:55:17][21] Processing: App\Jobs\TrialReminder
[2021-04-29 03:55:17][22] Processing: App\Jobs\TrialReminder
[2021-04-29 03:55:17][10] Processing: App\Jobs\TrialReminder
[2021-04-29 03:55:17][20] Processing: App\Jobs\TrialReminder
[2021-04-29 03:55:17][7] Processing: App\Jobs\TrialReminder
[2021-04-29 03:55:17][19] Processing: App\Jobs\TrialReminder

我希望速率限制器作业处理 5 jobs every 10 seconds,就像您在中间件函数中看到的那样,以便它可以发送 5 emails every 10 seconds。有没有人给我提示指示工人发送 5 emails every 10 seconds 请在下面发表评论并提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的使用 redis + horizo​​n 时,laravel 限速作业的工作原理全部内容,希望文章能够帮你解决使用 redis + horizo​​n 时,laravel 限速作业的工作原理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。