class Legion::Transport::Queue
Public Class Methods
new(queue = queue_name, options = {})
click to toggle source
Calls superclass method
# File lib/legion/transport/queue.rb, line 6 def initialize(queue = queue_name, options = {}) retries ||= 0 @options = options super(channel, queue, options_builder(default_options, queue_options, options)) rescue Legion::Transport::CONNECTOR::PreconditionFailed retries.zero? ? retries = 1 : raise recreate_queue(queue) retry end
Public Instance Methods
acknowledge(delivery_tag)
click to toggle source
# File lib/legion/transport/queue.rb, line 58 def acknowledge(delivery_tag) channel.acknowledge(delivery_tag) end
default_options()
click to toggle source
# File lib/legion/transport/queue.rb, line 22 def default_options hash = Concurrent::Hash.new hash[:manual_ack] = true hash[:durable] = true hash[:exclusive] = false hash[:block] = false hash[:auto_delete] = false hash[:arguments] = { 'x-max-priority': 255, 'x-overflow': 'reject-publish', 'x-dead-letter-exchange': "#{self.class.ancestors.first.to_s.split('::')[2].downcase}.dlx" } hash end
delete(options = { if_unused: true, if_empty: true })
click to toggle source
Calls superclass method
# File lib/legion/transport/queue.rb, line 51 def delete(options = { if_unused: true, if_empty: true }) super(options) true rescue Legion::Transport::CONNECTOR::PreconditionFailed false end
queue_name()
click to toggle source
# File lib/legion/transport/queue.rb, line 41 def queue_name ancestor = self.class.ancestors.first.to_s.split('::') name = if ancestor[5].scan(/[A-Z]/).length > 1 ancestor[5].gsub!(/(.)([A-Z])/, '\1_\2').downcase! else ancestor[5].downcase! end "#{ancestor[2].downcase}.#{name}" end
queue_options()
click to toggle source
# File lib/legion/transport/queue.rb, line 37 def queue_options Concurrent::Hash.new end
recreate_queue(queue)
click to toggle source
# File lib/legion/transport/queue.rb, line 16 def recreate_queue(queue) Legion::Transport.logger.warn "Queue:#{queue} exists with wrong parameters, deleting and creating" queue = ::Bunny::Queue.new(Legion::Transport::Connection.channel, queue, no_declare: true, passive: true) queue.delete(if_empty: true) end
reject(delivery_tag, requeue: false)
click to toggle source
# File lib/legion/transport/queue.rb, line 62 def reject(delivery_tag, requeue: false) channel.reject(delivery_tag, requeue) end