class ActiveJob::QueueAdapters::SqsAsyncAdapter
Async adapter for Amazon SQS ActiveJob
¶ ↑
This adapter queues jobs asynchronously (ie non-blocking). Error handler can be configured with Aws::Rails::SqsActiveJob.config.async_queue_error_handler
.
To use this adapter, set up as:
config.active_job.queue_adapter = :sqs_async
Private Instance Methods
_enqueue(job, body = nil, send_message_opts = {})
click to toggle source
Calls superclass method
ActiveJob::QueueAdapters::SqsAdapter#_enqueue
# File lib/active_job/queue_adapters/sqs_async_adapter.rb, line 19 def _enqueue(job, body = nil, send_message_opts = {}) # FIFO jobs must be queued in order, so do not queue async queue_url = Aws::Rails::SqsActiveJob.config.queue_url_for(job.queue_name) if Aws::Rails::SqsActiveJob.fifo?(queue_url) super else # Serialize is called here because the job’s locale needs to be # determined in this thread and not in some other thread. body = job.serialize Concurrent::Promises .future { super } .rescue do |e| Rails.logger.error "Failed to queue job #{job}. Reason: #{e}" error_handler = Aws::Rails::SqsActiveJob.config.async_queue_error_handler error_handler&.call(e, job, send_message_opts) end end end