Sha256: b0d70ff23383aab30def0e0ea1c698f1c68b3782d394d52d3e82ac468239118d

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents

require 'proletariat/version'

require 'concurrent'
require 'bunny'
require 'logger'
require 'forwardable'

require 'proletariat/concurrency/actor'
require 'proletariat/concurrency/poolable_actor'

require 'proletariat/util/worker_description_parser'

require 'proletariat/configuration'
require 'proletariat/exception_handler'
require 'proletariat/manager'
require 'proletariat/message'
require 'proletariat/publisher'
require 'proletariat/queue_config'
require 'proletariat/runner'
require 'proletariat/subscriber'
require 'proletariat/worker'

require 'proletariat/exception_handler/drop'
require 'proletariat/exception_handler/exponential_backoff'

# Public: Creates the Proletariat namespace and holds a process-wide Runner
#         instance as well as access to the configuration attributes.
module Proletariat
  class << self
    extend Forwardable

    # Public: Delegate lifecycle calls to the process-wide Runner.
    def_delegators :runner, :run, :running?, :stop

    # Public: Allows configuration of Proletariat via given block.
    #
    # block - Block containing configuration calls.
    #
    # Returns nil.
    def configure(&block)
      config.configure_with_block(&block)

      nil
    end

    def publish(to, body = '', headers = {})
      publisher_pool << Message.new(to, body, headers)
    end

    def runner
      @runner ||= Runner.new
    end

    def method_missing(method_sym, *arguments, &block)
      if config.respond_to? method_sym
        config.send(method_sym, *arguments, &block)
      else
        super
      end
    end

    private

    # Internal: Global configuration object.
    def config
      @config ||= Configuration.new
    end

    def publisher_pool
      @publisher_pool ||= Publisher.pool(Proletariat.publisher_threads)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
proletariat-0.1.2 lib/proletariat.rb
proletariat-0.1.1 lib/proletariat.rb
proletariat-0.1.0 lib/proletariat.rb