我正在使用带有Redis的Resque作为通过ActiveJob的队列后端。如何清除所有队列以防止作业再次运行。
从文档中,我看到我可以做到
Resque::Job.destroy(queue_name, "Job_CLass_Name")
所以就我而言,我使用的是默认队列,我的作业类名称是NotificationJob
,这是我从 Heroku 控制台上所做的:
Resque::Job.destroy("default", "NotificationJob")
但它不起作用
ActiveJob 在您的作业类周围使用包装器类。所以对于 Resque,包装类名是ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper
。
对于队列名称,我建议您通过Resque.queues
检查可用的队列。有时,环境名称将附加到默认队列名称。因此,在您的情况下,您可以尝试:
Resque.destroy("#{environment_name}_default", "ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper")
希望这有所帮助