Module: SimpleMessageQueue

Defined in:
lib/simple_message_queue.rb,
lib/simple_message_queue/errors.rb,
lib/simple_message_queue/version.rb,
lib/simple_message_queue/configuration.rb

Defined Under Namespace

Classes: Configuration, ConfigurationError, EnvironmentError, NotImplementedError

Constant Summary collapse

VERSION =
"0.0.3"

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.configurationObject

Class Methods only available to SimpleMessageQueue



9
10
11
# File 'lib/simple_message_queue.rb', line 9

def configuration
  @configuration
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:



11
12
13
14
# File 'lib/simple_message_queue.rb', line 11

def configure
  self.configuration ||= Configuration.new
  yield(configuration)
end

Instance Method Details

#countObject



37
38
39
# File 'lib/simple_message_queue.rb', line 37

def count
  queue.approximate_number_of_messages
end

#delete_queueObject



41
42
43
# File 'lib/simple_message_queue.rb', line 41

def delete_queue
  queue.delete
end

#exists?Boolean

Returns:

  • (Boolean)


45
46
47
48
49
50
51
# File 'lib/simple_message_queue.rb', line 45

def exists?
  # Although there is a queue.exists? method, that is only relevant if you already have the queue stored in a variable and then delete it
  # Trying to look it up by name will either return the queue object or throw an error, hence the rescue
  true if sqs.queues.named(queue_name)
rescue
  false
end

#loggerObject



57
58
59
60
61
62
63
# File 'lib/simple_message_queue.rb', line 57

def logger
  if SimpleMessageQueue.configuration.logger
    @logger ||= SimpleMessageQueue.configuration.logger
  else
    @logger ||= Logger.new(STDOUT)
  end
end

#process_message(message) ⇒ Object



75
76
77
# File 'lib/simple_message_queue.rb', line 75

def process_message(message)
  raise SimpleMessageQueue::NotImplementedError.new(name)
end

#queueObject



33
34
35
# File 'lib/simple_message_queue.rb', line 33

def queue
  @queue ||= sqs.queues.create(queue_name)
end

#queue_nameObject



24
25
26
27
28
29
30
31
# File 'lib/simple_message_queue.rb', line 24

def queue_name
  raise SimpleMessageQueue::EnvironmentError unless environment_defined?
  if @queue_name
    @queue_name + "_#{SimpleMessageQueue.configuration.environment}"
  else
    name.underscore.gsub('/', '_') + "_#{SimpleMessageQueue.configuration.environment}"
  end
end

#receiveObject



65
66
67
68
69
70
71
72
73
# File 'lib/simple_message_queue.rb', line 65

def receive
  @count = 0
  logger.info "Receiving messages for #{queue_name} at #{DateTime.now}"
  queue.poll(:idle_timeout => SimpleMessageQueue.configuration.idle_timeout, :wait_time_seconds => SimpleMessageQueue.configuration.wait_time_seconds) do |message|
    @count += 1
    process_message(message)
  end
  @count
end

#send(message) ⇒ Object



53
54
55
# File 'lib/simple_message_queue.rb', line 53

def send(message)
  queue.send_message(message)
end

#sqsObject



18
19
20
21
22
# File 'lib/simple_message_queue.rb', line 18

def sqs
  raise SimpleMessageQueue::ConfigurationError unless SimpleMessageQueue.configuration
  raise SimpleMessageQueue::EnvironmentError unless environment_defined?
  @@sqs ||= AWS::SQS.new(:access_key_id => SimpleMessageQueue.configuration.access_key_id, :secret_access_key => SimpleMessageQueue.configuration.secret_access_key)
end