You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
![]() |
2 years ago | |
---|---|---|
lib/sidekiq | 2 years ago | |
spec | 2 years ago | |
.gitignore | 2 years ago | |
.rspec | 2 years ago | |
Gemfile | 2 years ago | |
Gemfile.lock | 2 years ago | |
LICENSE | 2 years ago | |
README.md | 2 years ago | |
sidekiq-workflow.gemspec | 2 years ago |
README.md
Sidekiq::Workflow
Why yet another Sidekiq workflow library?
easymarketing/sidekiq_workflows
is only usable with Sidekiq Pro
chaps-io/gush
move from Sidekiq to
ActiveJob on their 1.0
and don't support
all advanced Sidekiq configuration like sidekiq_options
or sidekiq_retry_in
because all jobs are encapsulated on a single (and shared) Sidekiq class worker.
This library try to keep all Sidekiq features available at job level,
using Module#prepend
to encapsulate own workflow behaviour around classic Sidekiq worker behaviour.
How to use it
require 'sidekiq/workflow'
Sidekiq::Workflow.configure url: 'redis://localhost/0'
class FetchJob
include Sidekiq::Workflow::Worker
sidekiq_options queue: :default, retry: 3
sidekiq_retry_in { 10 }
def perform(...) end
end
class SampleWorkflow < Sidekiq::Workflow
def configure(url_to_fetch_from)
fetch1 = job FetchJob, { url: url_to_fetch_from }
fetch2 = job FetchJob, { some_flag: true, url: 'http://example.com' }
persist1 = job PersistJob, after: fetch1
persist2 = job PersistJob, after: fetch2
index = job Index
job Normalize, after: [persist1, persist2], before: index
end
end
SampleWorkflow.start! 'http://example.net'