php - 具有个人最大尝试次数的排队作业,如何?

标签 php laravel laravel-5

通常,最大尝试在队列级别指定,如下所示:

php artisan queue:listen connection-name --tries=3

我希望能够在作业类中的作业级别覆盖此设置(不影响其他作业)。

我可以想到三种方法来解决这个问题,但它们可能并不优雅:
  • 在队列级别设置大量尝试
  • 查看失败的队列并重试作业
  • 失败时创建新作业

  • 笔记:
  • 我的情况与通过 API 进行轮询有关。
  • 我正在我自己的模型中记录我的投票尝试。
  • 最佳答案

    尝试使用 attempts()在作业类中检查当前作业尝试的方法。像下面这样的东西。

    class MyJobClass implements ShouldQueue
    {
    
        public function handle()
        {
            if ($this->attempts() < 3) {
                // do job things
            }
            else {
                // delete job
            }
        }
    }
    

    laravel 仓库引用 https://github.com/laravel/framework/blob/5.3/src/Illuminate/Queue/InteractsWithQueue.php#L21

    关于php - 具有个人最大尝试次数的排队作业,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40923238/

    相关文章:

    php - Laravel:我们可以在以前的版本中使用最新版本的服务吗

    mysql - laravel between two dates query error 语法错误

    functional-testing - 当我尝试在 Laravel 5 上运行 Codeception 时出现 NotFoundHttpException

    php - 如何更改/自定义 Laravel 4 和 Laravel 5 用户身份验证的密码字段名称

    eloquent - Laravel eloquent 使用 with() 方法连接多个表并搜索数据

    php - 删除换行符之后或之前的三个点

    php - 使用 Imagick PHP 勾勒透明图像时如何用边框颜色填充封闭区域

    php - 单击按钮一一获取数据库值

    php - 尝试在 Laravel 中播种角色时进入 Container.php 行 752 : Class RoleTableSeeder does not exist error,

    Laravel eloquent 搜索相关模型的字段