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

Defined in:
lib/legion/transport/queues/region_outbound.rb

Class Method Summary collapse

Class Method Details

.declare_allObject



9
10
11
12
13
14
15
16
17
# File 'lib/legion/transport/queues/region_outbound.rb', line 9

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



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/legion/transport/queues/region_outbound.rb', line 19

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' }
  )
rescue StandardError => e
  Legion::Transport.logger.warn "RegionOutbound: failed to declare queue for #{target_region}: #{e.message}"
  nil
end

.queue_name_for(target_region) ⇒ Object



32
33
34
# File 'lib/legion/transport/queues/region_outbound.rb', line 32

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