跳至内容 跳至搜索

Active Job 基础

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

ActiveJob::Base.queue_adapter = :inline

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

可以通过创建继承自 ActiveJob::Base 类的类来定义 Active Job 对象。唯一需要实现的方法是“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

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

若要在队列系统空闲时立即执行作业

ProcessPhotoJob.perform_later(photo)

若要在将来某个时间点处理作业

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

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

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

ProcessPhotoJob.perform_now(photo)

异常

包含的模块