Class: Twingly::AMQP::DefaultExchangePublisher

Inherits:
Object
  • Object
show all
Includes:
Publisher
Defined in:
lib/twingly/amqp/default_exchange_publisher.rb

Constant Summary collapse

DEFAULT_EXCHANGE =
""

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Publisher

#configure_publish_options, #publish, #publish_with_confirm

Constructor Details

#initialize(queue_name:, connection: Connection.instance) ⇒ DefaultExchangePublisher

Returns a new instance of DefaultExchangePublisher.



8
9
10
11
12
# File 'lib/twingly/amqp/default_exchange_publisher.rb', line 8

def initialize(queue_name:, connection: Connection.instance)
  options.routing_key = queue_name

  @exchange = connection.create_channel.default_exchange
end

Class Method Details

.delayed(delay_queue_name:, target_queue_name:, delay_ms:, delay_queue_type: :quorum, connection: Connection.instance) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/twingly/amqp/default_exchange_publisher.rb', line 14

def self.delayed(delay_queue_name:, target_queue_name:, delay_ms:, delay_queue_type: :quorum,
                 connection: Connection.instance)
  Utilities.create_queue(delay_queue_name,
                         arguments: {
                           "x-dead-letter-exchange":    DEFAULT_EXCHANGE,
                           "x-dead-letter-routing-key": target_queue_name,
                         },
                         queue_type: delay_queue_type)

  new(queue_name: delay_queue_name, connection: connection).tap do |publisher|
    publisher.configure_publish_options do |options|
      options.expiration = delay_ms
    end
  end
end