manhcuongdtbk / sidekiq-workflow

Sidekiq workflow manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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'

About

Sidekiq workflow manager

License:GNU Affero General Public License v3.0


Languages

Language:Ruby 100.0%