Class: Leveret::DelayQueue

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/leveret/delay_queue.rb

Overview

Connects to a special queue which keeps messages in a holding pattern until a timeout expires and then publishes those messages back to the main queue for processing.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDelayQueue

Returns a new instance of DelayQueue.



11
12
13
# File 'lib/leveret/delay_queue.rb', line 11

def initialize
  @queue = connect_to_queue
end

Instance Attribute Details

#queueObject (readonly)

Returns the value of attribute queue.



7
8
9
# File 'lib/leveret/delay_queue.rb', line 7

def queue
  @queue
end

Instance Method Details

#republish(message) ⇒ Object

Place a message onto the delay queue, which will later be expired and sent back to the main exchange

Parameters:

  • A (Message)

    message received and processed already



18
19
20
21
# File 'lib/leveret/delay_queue.rb', line 18

def republish(message)
  delay_exchange.publish(message.params.serialize, expiration: configuration.delay_time, persistent: true,
    routing_key: message.routing_key, priority: message.priority)
end