-
Notifications
You must be signed in to change notification settings - Fork 70
Getting started
Backburner allows you to create jobs and place them on a beanstalk queue, and later pull those jobs off the queue and process them asynchronously. This guide walks you through the "happy path" to using Backburner.
First, if you haven't yet then you need to setup Backburner.
The simplest way to enqueue jobs is by invoking the async method on any object which
includes Backburner::Performable. Async enqueuing works for both instance and class methods on any performable object.
class User
include Backburner::Performable
queue "user-tasks" # queue defaults to "user"
def activate(device_id)
@device = Device.find(device_id)
# ...
end
def self.reset_password(user_id)
# ...
end
end
# Async works for instance methods on a persisted model
@user = User.first
@user.async(:pri => 1000, :ttr => 100, :queue => "user.activate").activate(@device.id)This will automatically enqueue a job for that user record that will run activate with the specified argument. You can also use async on class methods as well just as easily:
User.async(:pri => 100, :delay => 10.seconds).reset_password(@user.id)The queue name used by default is the normalized class name (i.e {namespace}.user) if not otherwise specified. Note you are able to pass pri, ttr, delay and queue directly as options into async.
The Backburner worker exists as a rake task:
require 'backburner/tasks'so you can run:
$ bundle exec rake backburner:work
$ QUEUES=newsletter-sender,push-message bundle exec rake backburner:workYou can also just work jobs in ruby using:
Backburner.workThis will process jobs in all queues but you can also restrict processing to specific queues:
Backburner.work('newsletter_sender')