【问题标题】:Remove delayed Job from Redis with Laravel 8使用 Laravel 8 从 Redis 中删除延迟的作业
【发布时间】:2021-03-13 14:42:06
【问题描述】:

我在默认 redis 队列中有作业延迟,我想在模型的状态更新到某个值时将其删除。

所以我正在使用更新的观察者:

     /**
     * If status change from active to draft remove delayed job
     *
     * @param  Draw  $draw
     */
    public function updated(Draw $draw)
    {
        $originalStatus = $draw->getOriginal('status');
        $newStatus = $draw->status;

        if ($originalStatus === 'active' && $newStatus === 'draft') {
            $job = Redis::get('App\Models\Draw:' . $draw->id);
            $job->delete();
        }
    }

使用此代码$job 始终为空。你知道我如何从 redis 默认队列中得到我的工作吗?我不知道我需要使用什么 redis 密钥来获取特定作业

【问题讨论】:

标签: laravel redis queue


【解决方案1】:

也许终止作业的正确/简单方法应该是在运行时检查job 中的状态,并根据状态决定作业应该做什么。

【讨论】:

  • 是的,我想过,但我不知道这是不是更清洁的方法
  • 检查工作内部你完全拥有代码,甚至可以对其进行测试,但是检查 redis 表你正在处理框架如何存储工作,它可能会发生变化。这不是你的代码,而是你不拥有的内部 Laravel 代码
猜你喜欢
  • 2011-08-26
  • 1970-01-01
  • 2019-01-30
  • 2020-11-17
  • 2012-11-28
  • 2019-08-13
  • 2012-04-20
  • 2015-12-18
  • 1970-01-01
相关资源
最近更新 更多