Class: ActiveJob::QueueAdapters::FaktoryAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/active_job/queue_adapters/faktory_adapter.rb

Overview

Faktory adapter for Active Job

To use Faktory set the queue_adapter config to :faktory.

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

Defined Under Namespace

Classes: JobWrapper

Constant Summary collapse

@@stopping =
false

Instance Method Summary collapse

Instance Method Details

#enqueue(job) ⇒ Object

:nodoc:



24
25
26
# File 'lib/active_job/queue_adapters/faktory_adapter.rb', line 24

def enqueue(job) # :nodoc:
  enqueue_at(job, nil)
end

#enqueue_after_transaction_commit?(job) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)


20
21
22
# File 'lib/active_job/queue_adapters/faktory_adapter.rb', line 20

def enqueue_after_transaction_commit?(job) # :nodoc:
  true
end

#enqueue_at(job, timestamp) ⇒ Object

:nodoc:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/active_job/queue_adapters/faktory_adapter.rb', line 28

def enqueue_at(job, timestamp) # :nodoc:
  jid = SecureRandom.hex(12)
  job.provider_job_id = jid
  hash = {
    "jid" => jid,
    "jobtype" => JobWrapper.to_s,
    "custom" => {
      "wrapped" => job.class.to_s
    },
    "queue" => job.queue_name,
    "args" => [job.serialize]
  }
  opts = job.faktory_options_hash.dup
  hash["at"] = Time.at(timestamp).utc.to_datetime.rfc3339(9) if timestamp
  if opts.size > 0
    hash["retry"] = opts.delete("retry") if opts.has_key?("retry")
    hash["custom"] = opts.merge(hash["custom"])
  end
  pool = Thread.current[:faktory_via_pool] || Faktory.server_pool
  Faktory.client_middleware.invoke(hash, pool) do
    pool.with do |c|
      c.push(hash)
    end
  end
end

#stopping?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/active_job/queue_adapters/faktory_adapter.rb', line 16

def stopping?
  @@stopping
end