Sha256: 70a7a7a17354c3e701ea810a736bfdd5e79c80f30e0b1781fb4d48fd066a619b

Contents?: true

Size: 1.39 KB

Versions: 9

Compression:

Stored size: 1.39 KB

Contents

module Shoryuken
  module ActiveJobExtensions
    # Adds an accessor for SQS SendMessage parameters on ActiveJob jobs
    # (instances of ActiveJob::Base). Shoryuken ActiveJob queue adapters use
    # these parameters when enqueueing jobs; other adapters can ignore them.
    module SQSSendMessageParametersAccessor
      extend ActiveSupport::Concern

      included do
        attr_accessor :sqs_send_message_parameters
      end
    end

    # Initializes SQS SendMessage parameters on instances of ActiveJobe::Base
    # to the empty hash, and populates it whenever `#enqueue` is called, such
    # as when using ActiveJob::Base.set.
    module SQSSendMessageParametersSupport
      def initialize(*arguments)
        super(*arguments)
        self.sqs_send_message_parameters = {}
      end
      ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)

      def enqueue(options = {})
        sqs_options = options.extract! :message_attributes,
                                       :message_system_attributes,
                                       :message_deduplication_id,
                                       :message_group_id
        sqs_send_message_parameters.merge! sqs_options

        super
      end
    end
  end
end

ActiveJob::Base.include Shoryuken::ActiveJobExtensions::SQSSendMessageParametersAccessor
ActiveJob::Base.prepend Shoryuken::ActiveJobExtensions::SQSSendMessageParametersSupport

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
shoryuken-6.0.0 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.3.2 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.3.1 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.3.0 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.2.3 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.2.2 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.2.1 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.2.0 lib/shoryuken/extensions/active_job_extensions.rb
shoryuken-5.1.1 lib/shoryuken/extensions/active_job_extensions.rb