Class: Basquiat::Adapters::RabbitMq::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/basquiat/adapters/rabbitmq/configuration.rb

Overview

Responsible for dealing with the overall configuration of the RabbitMQ adapter

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/basquiat/adapters/rabbitmq/configuration.rb', line 10

def initialize
  @options = { connection:
                 { hosts: ['localhost'],
                   port: 5672,
                   auth: { user: 'guest', password: 'guest' } },
               queue: {
                 name: Basquiat.configuration.queue_name,
                 durable: true,
                 options: {}
               },
               exchange: {
                 name: Basquiat.configuration.exchange_name,
                 durable: true,
                 options: {}
               },
               publisher: { confirm: true, persistent: false },
               consumer: { prefetch: 1000, manual_ack: true },
               requeue: { enabled: false } }
end

Instance Method Details

#base_optionsObject



30
31
32
# File 'lib/basquiat/adapters/rabbitmq/configuration.rb', line 30

def base_options
  @options
end

#connection_optionsHash

Returns the connection options.

Returns:

  • (Hash)

    the connection options



47
48
49
# File 'lib/basquiat/adapters/rabbitmq/configuration.rb', line 47

def connection_options
  @options[:connection]
end

#merge_user_options(**user_opts) ⇒ Hash

Merges the user supplied options with the base ones

Parameters:

  • user_opts (Hash{Symbol=>Object})

Options Hash (**user_opts):

Returns:

  • (Hash)

    the configuration option hash



42
43
44
# File 'lib/basquiat/adapters/rabbitmq/configuration.rb', line 42

def merge_user_options(**user_opts)
  @options.deep_merge(user_opts)
end

#session_optionsHash

Returns the session options.

Returns:

  • (Hash)

    the session options



52
53
54
55
56
57
# File 'lib/basquiat/adapters/rabbitmq/configuration.rb', line 52

def session_options
  { exchange: @options[:exchange],
    publisher: @options[:publisher],
    consumer: @options[:consumer],
    queue: @options[:queue] }.deep_merge(strategy.session_options)
end

#strategyBaseStrategy

Returns the requeue strategy or BasicAcknowledge if none is configured.

Returns:



60
61
62
63
64
65
66
# File 'lib/basquiat/adapters/rabbitmq/configuration.rb', line 60

def strategy
  requeue = @options[:requeue]
  return AutoAcknowledge unless requeue[:enabled]
  @strategy ||= RabbitMq.strategy(requeue[:strategy].to_sym)
  @strategy.setup(requeue[:options] || {})
  @strategy
end