Class: ActiveJob::QueueAdapters::ActiveElasticJobAdapter
- Inherits:
-
Object
- Object
- ActiveJob::QueueAdapters::ActiveElasticJobAdapter
- Defined in:
- lib/active_job/queue_adapters/active_elastic_job_adapter.rb
Overview
Active Elastic Job adapter for Active Job
Active Elastic Job provides (1) an adapter (this class) for Rails’ Active Job framework and (2) a Rack middleware to process job requests, which are sent by the SQS daemon running in Amazon Elastic Beanstalk worker environments.
This adapter serializes job objects and sends them as a message to an Amazon SQS queue specified by the job’s queue name, see ActiveJob::Base.queue_as
To use Active Elastic Job, set the queue_adapter config to :active_elastic_job
.
Rails.application.config.active_job.queue_adapter = :active_elastic_job
Class Method Summary collapse
-
.enqueue(job) ⇒ Object
:nodoc:.
-
.enqueue_at(job, timestamp) ⇒ Object
:nodoc:.
Class Method Details
.enqueue(job) ⇒ Object
:nodoc:
18 19 20 |
# File 'lib/active_job/queue_adapters/active_elastic_job_adapter.rb', line 18 def enqueue(job) #:nodoc: enqueue_at(job, Time.now) end |
.enqueue_at(job, timestamp) ⇒ Object
:nodoc:
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/active_job/queue_adapters/active_elastic_job_adapter.rb', line 22 def enqueue_at(job, ) #:nodoc: queue_url = aws_sqs_client.create_queue(queue_name: job.queue_name.to_s).queue_url = JSON.dump(job.serialize) delay = ( - Time.current.to_f).to_i + 1 if delay > 15.minutes msg =<<-MSG Jobs cannot be scheduled more than 15 minutes into the future. See http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html for further details! MSG raise RangeError, 'The maximum allowed delay is 15 minutes' if delay > 15.minutes end aws_sqs_client.( queue_url: queue_url, message_body: , delay_seconds: delay, message_attributes: { "message_digest" => { string_value: (), data_type: "String" } } ) end |