Module: Legion::Transport::Queues::RegionOutbound

Extended by:
Logging::Helper
Defined in:
lib/legion/transport/queues/region_outbound.rb

Class Method Summary collapse

Class Method Details

.declare_allObject



13
14
15
16
17
18
19
20
21
# File 'lib/legion/transport/queues/region_outbound.rb', line 13

def declare_all
  peers = defined?(Legion::Settings) && Legion::Settings.dig(:region, :peers)
  return [] unless peers.is_a?(Array) && !peers.empty?

  current = defined?(Legion::Region) ? Legion::Region.current : nil
  peers.reject { |p| p == current }.map do |peer|
    declare_outbound(peer)
  end
end

.declare_outbound(target_region) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/legion/transport/queues/region_outbound.rb', line 23

def declare_outbound(target_region)
  queue_name = queue_name_for(target_region)
  channel = Legion::Transport::Connection.channel
  channel.queue(
    queue_name,
    durable:   true,
    arguments: { 'x-dead-letter-exchange' => 'tasks.dlx' }
  )
  log.info "Declared region outbound queue=#{queue_name} target_region=#{target_region}"
rescue StandardError => e
  handle_exception(e, level: :warn, handled: true, operation: 'transport.region_outbound.declare',
                   target_region: target_region, queue_name: queue_name)
  nil
end

.queue_name_for(target_region) ⇒ Object



38
39
40
# File 'lib/legion/transport/queues/region_outbound.rb', line 38

def queue_name_for(target_region)
  "legion.tasks.outbound.#{target_region}"
end