Sidejobs
Versatile async database based jobs for rails.
Why
I did this gem to:
- Avoid the need to install another admin interface.
- Simplify the job api by having close integration to rails.
- Using sql instead of redis to never lose jobs.
Install
Put this line in your Gemfile:
gem 'sidejobs'
Then bundle:
$ bundle
Configuration
Generate the sidejobs configuration and migration file:
$ bundle exec rails g sidejobs:install
Set the global settings:
Sidejobs.configure do |config|
config.max_attempts = 3
config.sleep_delay = 15
config.batch_size = 20
end
Run the migration to create the sidejobs table:
$ bundle exec rake db:migrate
Assign the sidejobs adapter to the environments:
Rails.application.configure do
config.active_job.queue_adapter = :sidejobs
end
Usage
Daemon
To control the daemon, use the rake tasks:
$ bundle exec rake sidejobs:start
$ bundle exec rake sidejobs:stop
$ bundle exec rake sidejobs:restart
Queue
You can deliver mails using deliver_later:
UserMailer.invite('[email protected]').deliver_later
Or perform jobs using perform_later:
SendNewsletterJob.perform_later
Management
No admin interface, all is done using Sidejobs::Job model:
Sidejobs::Job.failing.where('attempts > ?', 3).destroy_all
Credits
This gem is maintained and funded by mmontossi.
License
It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.