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 =" Jobs cannot be scheduled more than 15 minutes into the future.\n See http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html\n for further details!\n MSG\n raise RangeError, 'The maximum allowed delay is 15 minutes' if delay > 15.minutes\n end\n\n aws_sqs_client.send_message(\n queue_url: queue_url,\n message_body: message_body,\n delay_seconds: delay,\n message_attributes: {\n \"message_digest\" => {\n string_value: message_digest(message_body),\n data_type: \"String\"\n }\n }\n )\nend\n" |