class ActiveJob::QueueAdapters::AmazonSqsAdapter

def _enqueue(job, body = nil, send_message_opts = {})

def _enqueue(job, body = nil, send_message_opts = {})
  body ||= job.serialize
  queue_url = Aws::Rails::SqsActiveJob.config.queue_url_for(job.queue_name)
  send_message_opts[:queue_url] = queue_url
  send_message_opts[:message_body] = Aws::Json.dump(body)
  send_message_opts[:message_attributes] = message_attributes(job)
  if Aws::Rails::SqsActiveJob.fifo?(queue_url)
    # job_id is unique per initialization of job
    # Remove it from message dup id to ensure run-once behavior
    # with ActiveJob retries
    send_message_opts[:message_deduplication_id] =
      Digest::SHA256.hexdigest(Aws::Json.dump(body.except('job_id')))
    message_group_id = job.message_group_id if job.respond_to?(:message_group_id)
    message_group_id ||= Aws::Rails::SqsActiveJob.config.message_group_id
    send_message_opts[:message_group_id] = message_group_id
  end
  Aws::Rails::SqsActiveJob.config.client.send_message(send_message_opts)
end