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/subscriber.rb,
lib/action_subscriber/subscribable.rb,
lib/action_subscriber/thread_pools.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, Subscriber, ThreadPools Classes: Base, Configuration, Railtie, Route, RouteSet, Router, URI

Constant Summary collapse

VERSION =
"5.3.0"

Class Method Summary collapse

Class Method Details

.after_server_start(&block) ⇒ Object



90
91
92
93
94
# File 'lib/action_subscriber.rb', line 90

def self.after_server_start(&block)
  ::ActiveSupport::Notifications.subscribe("action_subscriber:server_started") do |*args|
    block.call(*args)
  end
end

.after_server_stop(&block) ⇒ Object



96
97
98
99
100
# File 'lib/action_subscriber.rb', line 96

def self.after_server_stop(&block)
  ::ActiveSupport::Notifications.subscribe("action_subscriber:server_stopped") do |*args|
    block.call(*args)
  end
end

.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:



39
40
41
# File 'lib/action_subscriber.rb', line 39

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

.draw_routes(&block) ⇒ Object



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

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


52
53
54
55
56
57
58
59
60
# File 'lib/action_subscriber.rb', line 52

def self.print_deprecation_warning(specific_warning)
  logger.info ("#"*50)
  logger.info ("# DEPRECATION NOTICE ")
  logger.info ("# #{specific_warning}")
  logger.info ("# The usage of multiple connections and the :concurrency setting have been deprecated in favor of using threadpools")
  logger.info ("# Please see https://github.com/mxenabled/action_subscriber#connections-deprecated for details")
  logger.info ("# If this change is a problem for your usage of action_subscriber please let us know here: https://github.com/mxenabled/action_subscriber/issues/92")
  logger.info ("#"*50)
end


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

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


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

def self.print_threadpool_stats
  route_set.print_threadpool_stats
end

.setup_default_threadpool!Object



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

def self.setup_default_threadpool!
  ::ActionSubscriber::ThreadPools.setup_threadpool(:default, {})
end

.setup_subscriptions!Object



75
76
77
# File 'lib/action_subscriber.rb', line 75

def self.setup_subscriptions!
  route_set.setup_subscriptions!
end

.start_subscribers!Object



79
80
81
# File 'lib/action_subscriber.rb', line 79

def self.start_subscribers!
  route_set.start_subscribers!
end

.stop_subscribers!(timeout = nil) ⇒ Object



83
84
85
86
87
88
# File 'lib/action_subscriber.rb', line 83

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