module Emque::Consuming::Application
Public Class Methods
included(descendant)
click to toggle source
# File lib/emque/consuming/application.rb, line 16 def self.included(descendant) Emque::Consuming.application = descendant descendant.class_eval do extend Emque::Consuming::Core include Emque::Consuming::Helpers attr_reader :error_tracker, :manager private :ensure_adapter_is_configured!, :initialize_error_tracker, :initialize_manager, :log_prefix, :handle_shutdown end end
new()
click to toggle source
# File lib/emque/consuming/application.rb, line 30 def initialize self.class.instance = self logger.info "#{log_prefix}: initializing" ensure_adapter_is_configured! initialize_manager initialize_error_tracker end
Public Instance Methods
auto_shutdown_enabled()
click to toggle source
private
# File lib/emque/consuming/application.rb, line 74 def auto_shutdown_enabled config.auto_shutdown end
ensure_adapter_is_configured!()
click to toggle source
# File lib/emque/consuming/application.rb, line 78 def ensure_adapter_is_configured! if config.adapter.nil? raise AdapterConfigurationError, "Adapter not found! use config.set_adapter(name, options)" end end
handle_shutdown()
click to toggle source
# File lib/emque/consuming/application.rb, line 85 def handle_shutdown context = { :limit => error_tracker.limit, :expiration => error_tracker.expiration, :occurrences => error_tracker.occurrences, :status => runner.status.to_h, :configuration => config.to_h } Emque::Consuming.logger.error("Error limit exceeded... shutting down") Emque::Consuming.logger.error(context) Emque::Consuming.config.shutdown_handlers.each do |handler| handler.call(context) end end
initialize_error_tracker()
click to toggle source
# File lib/emque/consuming/application.rb, line 102 def initialize_error_tracker @error_tracker = Emque::Consuming::ErrorTracker.new( :expiration => config.error_expiration, :limit => config.error_limit ) end
initialize_manager()
click to toggle source
# File lib/emque/consuming/application.rb, line 109 def initialize_manager @manager = config.adapter.manager.new end
log_prefix()
click to toggle source
# File lib/emque/consuming/application.rb, line 113 def log_prefix "#{config.app_name.capitalize} Application" end
notice_error(context)
click to toggle source
# File lib/emque/consuming/application.rb, line 41 def notice_error(context) error_tracker.notice_error_for(context) verify_error_status end
restart()
click to toggle source
# File lib/emque/consuming/application.rb, line 46 def restart stop initialize_manager error_tracker.occurrences.clear start end
start()
click to toggle source
# File lib/emque/consuming/application.rb, line 53 def start logger.info "#{log_prefix}: starting" manager.async.start end
stop()
click to toggle source
# File lib/emque/consuming/application.rb, line 58 def stop logger.info "#{log_prefix}: stopping" manager.stop end
verify_error_status()
click to toggle source
# File lib/emque/consuming/application.rb, line 63 def verify_error_status if error_tracker.limit_reached? if auto_shutdown_enabled handle_shutdown runner.stop end end end