Module: Legion::Transport::Queues::RegionOutbound
- Defined in:
- lib/legion/transport/queues/region_outbound.rb
Class Method Summary collapse
- .declare_all ⇒ Object
- .declare_outbound(target_region) ⇒ Object
- .queue_name_for(target_region) ⇒ Object
Class Method Details
.declare_all ⇒ Object
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.}" 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 |