module ElasticAPM::Spies::SQSSpy::Ext

def send_message(params = {}, options = {})

def send_message(params = {}, options = {})
  unless (transaction = ElasticAPM.current_transaction)
    return super(params, options)
  end
  queue_name = ElasticAPM::Spies::SQSSpy.queue_name(params)
  span_name = queue_name ? "SQS SEND to #{queue_name}" : 'SQS SEND'
  region = ElasticAPM::Spies::SQSSpy.region_from_url(params[:queue_url])
  context = ElasticAPM::Spies::SQSSpy.span_context(
    queue_name,
    region || config.region
  )
  ElasticAPM.with_span(
    span_name,
    TYPE,
    subtype: SUBTYPE,
    action: 'send',
    context: context
  ) do |span|
    trace_context = span&.trace_context || transaction.trace_context
    trace_context.apply_headers do |key, value|
      params[:message_attributes] ||= {}
      params[:message_attributes][key] ||= {}
      params[:message_attributes][key][:string_value] = value
      params[:message_attributes][key][:data_type] = 'String'
    end
    ElasticAPM::Spies::SQSSpy.without_net_http do
      super(params, options)
    end
  end
end