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.
aeris 9600075c17 Shortcut for ASCII display 1 year ago
lib/sidekiq Shortcut for ASCII display 1 year ago
spec Job abort 2 years ago
.gitignore Initial commit 2 years ago
.rspec Initial commit 2 years ago
Gemfile Initial commit 2 years ago
Gemfile.lock Display workflow as ASCII table 2 years ago
LICENSE Initial commit 2 years ago
README.md Initial commit 2 years ago
sidekiq-workflow.gemspec Display workflow as ASCII table 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'