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/threadpool.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, Threadpool, URI

Constant Summary collapse

VERSION =
"3.0.1"

Class Method Summary collapse

Class Method Details

.auto_pop!Object

Loop over all subscribers and pull messages if there are any waiting in the queue for us.



42
43
44
45
# File 'lib/action_subscriber.rb', line 42

def self.auto_pop!
  return if ::ActionSubscriber::Threadpool.busy?
  route_set.auto_pop!
end

.auto_subscribe!Object

Loop over all subscribers and register each as a subscriber.



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

def self.auto_subscribe!
  route_set.auto_subscribe!
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

Yields:



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

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

.draw_routes(&block) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/action_subscriber.rb', line 58

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


67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/action_subscriber.rb', line 67

def self.print_subscriptions
  logger.info configuration.inspect
  route_set.routes.group_by(&:subscriber).each do |subscriber, routes|
    logger.info subscriber.name
    routes.each do |route|
      logger.info "  -- method: #{route.action}"
      logger.info "    --    exchange: #{route.exchange}"
      logger.info "    --       queue: #{route.queue}"
      logger.info "    -- routing_key: #{route.routing_key}"
      logger.info "    --  threadpool: #{route.threadpool.name}, pool_size: #{route.threadpool.pool_size}"
    end
  end
end

.setup_default_connection!Object



81
82
83
# File 'lib/action_subscriber.rb', line 81

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

.setup_subscriptions!Object



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

def self.setup_subscriptions!
  route_set.setup_subscriptions!
end

.start_queuesObject



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

def self.start_queues
  setup_subscriptions!
  print_subscriptions
end

.start_subscribersObject



94
95
96
97
98
# File 'lib/action_subscriber.rb', line 94

def self.start_subscribers
  setup_subscriptions!
  auto_subscribe!
  print_subscriptions
end

.stop_subscribers!Object



100
101
102
# File 'lib/action_subscriber.rb', line 100

def self.stop_subscribers!
  route_set.cancel_consumers!
end