跳至内容 跳至搜索

Active Job 基础

Active Job 对象可以配置为与不同的后端排队框架配合使用。要指定要使用的队列适配器

ActiveJob::Base.queue_adapter = :inline

可以在 QueueAdapters 中找到支持的适配器列表。

Active Job 对象可以通过创建一个继承自 ActiveJob::Base 类的类来定义。唯一需要实现的方法是“perform”方法。

要定义一个 Active Job 对象

class ProcessPhotoJob < ActiveJob::Base
  def perform(photo)
    photo.watermark!('Rails')
    photo.rotate!(90.degrees)
    photo.resize_to_fit!(300, 300)
    photo.upload!
  end
end

传入的记录使用 Global ID 进行序列化/反序列化。更多信息可以在 Arguments 中找到。

要将一个作业排队以在排队系统空闲时立即执行

ProcessPhotoJob.perform_later(photo)

要将作业排队以在将来的某个时间点处理

ProcessPhotoJob.set(wait_until: Date.tomorrow.noon).perform_later(photo)

更多信息可以在 ActiveJob::Core::ClassMethods#set 中找到

作业也可以立即处理,而不必发送到队列

ProcessPhotoJob.perform_now(photo)

异常

包含的模块