Module: Sidekiq::ReliableJob

Defined in:
lib/sidekiq/reliable_job.rb,
lib/sidekiq/reliable_job/client.rb,
lib/sidekiq/reliable_job/outbox.rb,
lib/sidekiq/reliable_job/version.rb,
lib/sidekiq/reliable_job/enqueuer.rb,
lib/sidekiq/reliable_job/configuration.rb,
lib/sidekiq/reliable_job/outbox_processor.rb,
lib/sidekiq/reliable_job/client_middleware.rb,
lib/sidekiq/reliable_job/server_middleware.rb

Defined Under Namespace

Classes: Client, ClientMiddleware, Configuration, Enqueuer, Error, Outbox, OutboxProcessor, ServerMiddleware

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.base_classObject



5
6
7
# File 'lib/sidekiq/reliable_job/outbox.rb', line 5

def self.base_class
  @base_class ||= configuration.base_class.constantize
end

.configurationObject



17
18
19
# File 'lib/sidekiq/reliable_job/configuration.rb', line 17

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



21
22
23
# File 'lib/sidekiq/reliable_job/configuration.rb', line 21

def configure
  yield(configuration)
end

.configure_client!(config) ⇒ Object



21
22
23
24
25
# File 'lib/sidekiq/reliable_job.rb', line 21

def configure_client!(config)
  config.client_middleware do |chain|
    chain.add Sidekiq::ReliableJob::ClientMiddleware
  end
end

.configure_server!(config) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/sidekiq/reliable_job.rb', line 27

def configure_server!(config)
  configure_client!(config)

  config.server_middleware do |chain|
    chain.add Sidekiq::ReliableJob::ServerMiddleware
  end

  config.death_handlers << method(:on_death)

  enqueuer = Enqueuer.new(config)

  config.on(:startup) do
    enqueuer.start
  end

  config.on(:quiet) do
    enqueuer.stop
  end
end

.on_death(job, _exception) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'lib/sidekiq/reliable_job.rb', line 47

def on_death(job, _exception)
  return unless job["reliable_job"]

  if configuration.preserve_dead_jobs
    Outbox.where(jid: job["jid"]).update_all(status: Outbox::DEAD)
  else
    Outbox.where(jid: job["jid"]).delete_all
  end
end