Module: Twingly::AMQP::Utilities

Defined in:
lib/twingly/amqp/utilities.rb

Class Method Summary collapse

Class Method Details

.create_queue(queue_name, durable: true, arguments: {}, queue_type: :quorum, connection: Connection.instance) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/twingly/amqp/utilities.rb', line 4

def self.create_queue(queue_name, durable: true, arguments: {}, queue_type: :quorum, connection: Connection.instance)
  connection.with_channel do |channel|
    case queue_type
    when :quorum
      # Quorum queues are always durable, see https://www.rabbitmq.com/quorum-queues.html#feature-matrix
      raise ArgumentError, "durable: false is not supported by quorum queues" unless durable

      return channel.quorum_queue(queue_name, arguments: arguments)
    when :classic
      return channel.queue(queue_name, durable: durable, arguments: arguments)
    else
      raise ArgumentError, "Unknown queue type '#{queue_type}'"
    end
  end
end