class ActiveJob::QueueAdapters::SqsAdapter::Params

build request parameter of Aws::SQS::Client

Public Class Methods

assured_delay_seconds(timestamp) click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 9
def assured_delay_seconds(timestamp)
  delay = (timestamp - Time.now.to_f).floor
  delay = 0 if delay.negative?
  raise ArgumentError, 'Unable to queue a job with a delay great than 15 minutes' if delay > 15.minutes

  delay
end
new(job, body) click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 18
def initialize(job, body)
  @job = job
  @body = body || job.serialize
end

Public Instance Methods

entry() click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 27
def entry
  if Aws::Rails::SqsActiveJob.fifo?(queue_url)
    default_entry.merge(options_for_fifo)
  else
    default_entry
  end
end
queue_url() click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 23
def queue_url
  @queue_url ||= Aws::Rails::SqsActiveJob.config.queue_url_for(@job.queue_name)
end

Private Instance Methods

deduplication_body() click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 69
def deduplication_body
  ex_dedup_keys = @job.excluded_deduplication_keys if @job.respond_to?(:excluded_deduplication_keys)
  ex_dedup_keys ||= Aws::Rails::SqsActiveJob.config.excluded_deduplication_keys

  @body.except(*ex_dedup_keys)
end
default_entry() click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 37
def default_entry
  {
    message_body: Aws::Json.dump(@body),
    message_attributes: message_attributes
  }
end
message_attributes() click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 44
def message_attributes
  {
    'aws_sqs_active_job_class' => {
      string_value: @job.class.to_s,
      data_type: 'String'
    },
    'aws_sqs_active_job_version' => {
      string_value: Aws::Rails::VERSION,
      data_type: 'String'
    }
  }
end
options_for_fifo() click to toggle source
# File lib/active_job/queue_adapters/sqs_adapter/params.rb, line 57
def options_for_fifo
  options = {}
  options[:message_deduplication_id] =
    Digest::SHA256.hexdigest(Aws::Json.dump(deduplication_body))

  message_group_id = @job.message_group_id if @job.respond_to?(:message_group_id)
  message_group_id ||= Aws::Rails::SqsActiveJob.config.message_group_id

  options[:message_group_id] = message_group_id
  options
end