Class Queueue::Queue
In: lib/queueue/http/queue.rb
lib/queueue/queue.rb
Parent: Object

Methods

Attributes

messages  [R] 
name  [R] 
visibility_timeout  [R] 

Public Class methods

Create named Queue. An InvalidParameterValue Exception will be raised if the specified Queue name is not between 1 and 80 characters long. The Visibility Timeout for the Queue is set a default 30 seconds

[Source]

# File lib/queueue/queue.rb, line 8
    def initialize(queue_name)
      raise InvalidParameterValue.new("QueueName") if queue_name.nil? || !(1..80).include?(queue_name.size)
      @name, @messages, @visibility_timeout = queue_name, [], 30
    end

Public Instance methods

Delete a Message from the Queue. Nothing will happen if the specified message does not exist.

[Source]

# File lib/queueue/queue.rb, line 50
    def delete(message_id)
      @messages.delete_if {|m| m.message_id == message_id}
    end

Returns true if the Queue does not contain any messages.

[Source]

# File lib/queueue/queue.rb, line 55
    def empty?
      @messages.empty?
    end

Peek a Message providing the Message‘s id. A MessageNotFound Exception will be raised if no message with the specified id exists.

[Source]

# File lib/queueue/queue.rb, line 16
    def message(message_id)
      raise MissingParameter.new("MessageId") unless message_id
      @messages.find {|m| m.message_id == message_id} || raise(MessageNotFound)
    end

Get a number of visible Messages and set the Visibility Timeout on them. If number of Messages is not explicitly scpecified, one message is returned. If the Visibility Timeout is not explicitly specified, the Queue‘s current Visibility Timeout will be used. Returned Messages will be locked for an amount of time equal to the Visibility Timeout. These messages will not be visible on subsequent calls to queued_messages, until the Visibility Timeout expires.

[Source]

# File lib/queueue/queue.rb, line 28
    def queued_messages(number_of_messages, visibility_timeout)
      number_of_messages ||= 1
      visibility_timeout ||= self.visibility_timeout
      raise InvalidParameterValue.new("NumberOfMessages") if number_of_messages > 256
      raise InvalidParameterValue.new("VisibilityTimeout") if visibility_timeout > 86400
      @messages.select {|m| !m.locked?}[0, number_of_messages].map do |message|
        message.visibility_timeout = visibility_timeout
        message.lock!
        message
      end
    end

Push a Message to the Queue. Returns the new Message‘s id. The Queue‘s default Visibility Timeout is set on the Message.

[Source]

# File lib/queueue/queue.rb, line 42
    def receive(message_body)
      message = Message.new(message_body, visibility_timeout)
      @messages.push(message)
      message.message_id
    end

Only available if the Queueue::Http module has been loaded.

[Source]

# File lib/queueue/http/queue.rb, line 4
    def url
      "http://#{Queueue::Http::HOST}:#{Queueue::Http::PORT}/#{Queueue::Http::QUEUE_PREFIX}/#{@name}"
    end

Set the Queue‘s Visibility Timeout. A InvalidParameterValue exception will be raised if the specified Visibility Timeout is greater than 86400 seconds

[Source]

# File lib/queueue/queue.rb, line 62
    def visibility_timeout=(visibility_timeout)
      raise InvalidParameterValue.new("VisibilityTimeout") if visibility_timeout > 86400
      @visibility_timeout = visibility_timeout
    end

[Validate]