Sha256: 6b0182b82c8479bca60279c7f92bda931dd05d1ac407912784fbb85945469a27
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
# frozen_string_literal: true module CottonTail # App is the main class for a CottonTail server class App attr_reader :env, :config def initialize(queue_strategy: Queue::Bunny, env: {}, connection: Bunny.new, config: Configuration.new) @dependencies = { queue_strategy: queue_strategy, connection: connection } @env = env @config = config @connection = connection.start end def queues routes.queues end # Get a single message queue def queue(name) queues[name] end # Start the app, process all pending messages, and then shutdown def run supervisors.map(&:run).each(&:join) end def start supervisors.map(&:start) puts 'Waiting for messages ...' sleep 0.01 while running? end def routes @routes ||= DSL::Routes.new(**@dependencies) end private def supervisors @supervisors ||= queues.map do |_name, queue| Queue::Supervisor.new(queue, app: self) end end def running? supervisors.any?(&:running?) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cotton-tail-0.3.0 | lib/cotton_tail/app.rb |