class AWSSQS

Create a SQS endpoint.

Public Class Methods

new(buffer_size=SettingsProvider::MAX_BUFFER_SIZE) click to toggle source

Params

buffer_size => number of messages to send per call to SQS
# File lib/logstash_sqs/awssqs.rb, line 6
def initialize(buffer_size=SettingsProvider::MAX_BUFFER_SIZE)
  @buffer  = []
  @buffer_size = buffer_size > SettingsProvider::MAX_BUFFER_SIZE ? SettingsProvider::MAX_BUFFER_SIZE : buffer_size

  credentials = SettingsProvider.get_credentials

  @client = AWS::SQS.new(
    :access_key_id => credentials['access_key'],
    :secret_access_key => credentials['secret_key']
  )

  @queue = @client.queues.entries.first
end

Public Instance Methods

add_message(message) click to toggle source

Adds a message to this endpoint

# File lib/logstash_sqs/awssqs.rb, line 23
def add_message(message)
  begin
    @buffer <<  message
    if (@buffer.size >= @buffer_size)
      @queue.batch_send(*@buffer)
      @buffer.clear
    end
  rescue AWS::SQS::Errors::BatchSendError => exception
    DaemonSpawn::Base.log_file << "Could not send the message(s)"
    DaemonSpawn::Base.log_file << exception.failures
  end  
end