Class: ActiveJob::QueueAdapters::ShoryukenAdapter

Inherits:
AbstractAdapter
  • Object
show all
Defined in:
lib/shoryuken/extensions/active_job_adapter.rb

Overview

Shoryuken adapter for Active Job

Shoryuken (“sho-ryu-ken”) is a super-efficient AWS SQS thread based message processor.

Read more about Shoryuken here.

To use Shoryuken set the queue_adapter config to :shoryuken.

Rails.application.config.active_job.queue_adapter = :shoryuken

Direct Known Subclasses

ShoryukenConcurrentSendAdapter

Defined Under Namespace

Classes: JobWrapper

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.enqueue(job) ⇒ Object



26
27
28
# File 'lib/shoryuken/extensions/active_job_adapter.rb', line 26

def enqueue(job)
  instance.enqueue(job)
end

.enqueue_at(job, timestamp) ⇒ Object



30
31
32
# File 'lib/shoryuken/extensions/active_job_adapter.rb', line 30

def enqueue_at(job, timestamp)
  instance.enqueue_at(job, timestamp)
end

.instanceObject



21
22
23
24
# File 'lib/shoryuken/extensions/active_job_adapter.rb', line 21

def instance
  # https://github.com/ruby-shoryuken/shoryuken/pull/174#issuecomment-174555657
  @instance ||= new
end

Instance Method Details

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

:nodoc:



53
54
55
56
57
58
59
60
61
62
# File 'lib/shoryuken/extensions/active_job_adapter.rb', line 53

def enqueue(job, options = {}) # :nodoc:
  register_worker!(job)

  job.sqs_send_message_parameters.merge! options

  queue = Shoryuken::Client.queues(job.queue_name)
  send_message_params = message queue, job
  job.sqs_send_message_parameters = send_message_params
  queue.send_message send_message_params
end

#enqueue_after_transaction_commit?Boolean

only required for Rails 7.2.x

Returns:



36
37
38
# File 'lib/shoryuken/extensions/active_job_adapter.rb', line 36

def enqueue_after_transaction_commit?
  true
end

#enqueue_at(job, timestamp) ⇒ Object

:nodoc:



64
65
66
# File 'lib/shoryuken/extensions/active_job_adapter.rb', line 64

def enqueue_at(job, timestamp) # :nodoc:
  enqueue(job, delay_seconds: calculate_delay(timestamp))
end

#stopping?Boolean

Indicates whether Shoryuken is in the process of shutting down.

This method is required for ActiveJob Continuations support (Rails 8.1+). When true, it signals to jobs that they should checkpoint their progress and gracefully interrupt execution to allow for resumption after restart.

Returns:

  • true if Shoryuken is shutting down, false otherwise

See Also:



48
49
50
51
# File 'lib/shoryuken/extensions/active_job_adapter.rb', line 48

def stopping?
  launcher = Shoryuken::Runner.instance.launcher
  launcher&.stopping? || false
end