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