Sha256: d7dd49154aba539423facfa01efa8356cc621cdc7c5b42e8a8cfe508e9b50340

Contents?: true

Size: 937 Bytes

Versions: 1

Compression:

Stored size: 937 Bytes

Contents

# frozen_string_literal: true

require 'aws-sdk-sqs'
require 'concurrent'

module ActiveJob
  module QueueAdapters

    # == 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 = :amazon_sqs_async
    class AmazonSqsAsyncAdapter < AmazonSqsAdapter

      private

      def _enqueue(job, send_message_opts = {})
        Concurrent::Promise
        .execute { super(job, send_message_opts) }
        .on_error 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) if error_handler
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aws-sdk-rails-3.4.0 lib/active_job/queue_adapters/amazon_sqs_async_adapter.rb