Class: ActiveJob::QueueAdapters::ShoryukenConcurrentSendAdapter

Inherits:
ShoryukenAdapter
  • Object
show all
Defined in:
lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb

Overview

Shoryuken concurrent adapter for Active Job

This adapter sends messages asynchronously (ie non-blocking) and allows the caller to set up handlers for both success and failure

To use this adapter, set up as:

success_handler = ->(response, job, options) { StatsD.increment(“#jobjob.classjob.class.name.success”) } error_handler = ->(err, job, options) { StatsD.increment(“#jobjob.classjob.class.name.failure”) }

adapter = ActiveJob::QueueAdapters::ShoryukenConcurrentSendAdapter.new(success_handler, error_handler)

config.active_job.queue_adapter = adapter

Instance Method Summary collapse

Methods inherited from ShoryukenAdapter

enqueue, enqueue_at, #enqueue_at, instance

Constructor Details

#initialize(success_handler = nil, error_handler = nil) ⇒ ShoryukenConcurrentSendAdapter

Returns a new instance of ShoryukenConcurrentSendAdapter.



19
20
21
22
# File 'lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb', line 19

def initialize(success_handler = nil, error_handler = nil)
  @success_handler = success_handler
  @error_handler = error_handler
end

Instance Method Details

#enqueue(job, options = {}) ⇒ Object



24
25
26
# File 'lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb', line 24

def enqueue(job, options = {})
  send_concurrently(job, options) { |f_job, f_options| super(f_job, f_options) }
end

#error_handlerObject



32
33
34
35
36
37
38
# File 'lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb', line 32

def error_handler
  @error_handler ||= begin
    lambda { |error, job, _options|
      Shoryuken.logger.warn("Failed to enqueue job: #{job.inspect} due to error: #{error}")
    }
  end
end

#success_handlerObject



28
29
30
# File 'lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb', line 28

def success_handler
  @success_handler ||= ->(_send_message_response, _job, _options) { nil }
end