Module: ActionSubscriber

Defined in:
lib/action_subscriber.rb,
lib/action_subscriber/dsl.rb,
lib/action_subscriber/uri.rb,
lib/action_subscriber/base.rb,
lib/action_subscriber/babou.rb,
lib/action_subscriber/route.rb,
lib/action_subscriber/rspec.rb,
lib/action_subscriber/router.rb,
lib/action_subscriber/logging.rb,
lib/action_subscriber/preload.rb,
lib/action_subscriber/railtie.rb,
lib/action_subscriber/version.rb,
lib/action_subscriber/route_set.rb,
lib/action_subscriber/middleware.rb,
lib/action_subscriber/subscribable.rb,
lib/action_subscriber/configuration.rb,
lib/action_subscriber/message_retry.rb,
lib/action_subscriber/middleware/env.rb,
lib/action_subscriber/default_routing.rb,
lib/action_subscriber/bunny/subscriber.rb,
lib/action_subscriber/middleware/router.rb,
lib/action_subscriber/middleware/runner.rb,
lib/action_subscriber/rabbit_connection.rb,
lib/action_subscriber/middleware/decoder.rb,
lib/action_subscriber/march_hare/subscriber.rb,
lib/action_subscriber/middleware/error_handler.rb,
lib/action_subscriber/middleware/active_record/query_cache.rb,
lib/action_subscriber/middleware/active_record/connection_management.rb

Defined Under Namespace

Modules: Babou, Bunny, DSL, DefaultRouting, Logging, MarchHare, MessageRetry, Middleware, RSpec, RabbitConnection, Subscribable Classes: Base, Configuration, Railtie, Route, RouteSet, Router, URI

Constant Summary collapse

VERSION =
"4.5.1"

Class Method Summary collapse

Class Method Details

.configurationObject Also known as: config



16
17
18
# File 'lib/action_subscriber/preload.rb', line 16

def self.configuration
  @configuration ||= ::ActionSubscriber::Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Public Class Methods

Yields:



37
38
39
# File 'lib/action_subscriber.rb', line 37

def self.configure
  yield(configuration) if block_given?
end

.draw_routes(&block) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/action_subscriber.rb', line 41

def self.draw_routes(&block)
  fail "No block provided to ActionSubscriber.draw_routes" unless block_given?

  # We need to delay the execution of this block because ActionSubscriber is
  # not configured at this point if we're calling from within the required app.
  @route_set = nil
  @draw_routes_block = block
end

.loggerObject

Public Class Methods



12
13
14
# File 'lib/action_subscriber/preload.rb', line 12

def self.logger
  ::ActionSubscriber::Logging.logger
end


50
51
52
53
# File 'lib/action_subscriber.rb', line 50

def self.print_subscriptions
  logger.info configuration.inspect
  route_set.print_subscriptions
end


55
56
57
# File 'lib/action_subscriber.rb', line 55

def self.print_threadpool_stats
  route_set.print_threadpool_stats
end

.setup_default_connection!Object



59
60
61
# File 'lib/action_subscriber.rb', line 59

def self.setup_default_connection!
  ::ActionSubscriber::RabbitConnection.setup_connection(:default, {})
end

.setup_subscriptions!Object



63
64
65
# File 'lib/action_subscriber.rb', line 63

def self.setup_subscriptions!
  route_set.setup_subscriptions!
end

.start_subscribers!Object



67
68
69
# File 'lib/action_subscriber.rb', line 67

def self.start_subscribers!
  route_set.start_subscribers!
end

.stop_subscribers!(timeout = nil) ⇒ Object



71
72
73
74
75
76
# File 'lib/action_subscriber.rb', line 71

def self.stop_subscribers!(timeout = nil)
  timeout ||= ::ActionSubscriber.configuration.seconds_to_wait_for_graceful_shutdown
  route_set.cancel_consumers!
  logger.info "waiting for threadpools to empty (maximum wait of #{timeout}sec)"
  route_set.wait_to_finish_with_timeout(timeout)
end