module AdvancedSneakersActiveJob
Constants
- CONTENT_TYPE
- EXPONENTIAL_BACKOFF
Calculating exponential backoff by formulas with randomization leads to numerous RabbitMQ queues.
- VERSION
Public Class Methods
config()
click to toggle source
# File lib/advanced_sneakers_activejob.rb, line 35 def config @config ||= Configuration.new end
configure() { |config| ... }
click to toggle source
# File lib/advanced_sneakers_activejob.rb, line 39 def configure yield config end
const_missing(name)
click to toggle source
Calls superclass method
# File lib/advanced_sneakers_activejob.rb, line 80 def const_missing(name) Sneakers::Worker::Classes.define_active_job_consumers constants.include?(name) ? const_get(name) : super end
consumer_name(queue_name:)
click to toggle source
Based on ActiveSupport::Inflector#parameterize
# File lib/advanced_sneakers_activejob.rb, line 65 def consumer_name(queue_name:) # replace accented chars with their ascii equivalents parameterized_string = ::ActiveSupport::Inflector.transliterate(queue_name) # Turn unwanted chars into the separator parameterized_string.gsub!(/[^a-z0-9\-_]+/, '_') # No more than one of the separator in a row. parameterized_string.gsub!(/_{2,}/, '_') # Remove leading/trailing separator. parameterized_string.gsub!(/^_|_$/, '') # Ruby does not allow classes with leading digits parameterized_string.gsub!(/\A(\d)/, 'queue\1') [parameterized_string, 'consumer'].join('_').classify end
define_consumer(queue_name:)
click to toggle source
# File lib/advanced_sneakers_activejob.rb, line 43 def define_consumer(queue_name:) name = consumer_name(queue_name: queue_name) return const_get(name) if const_defined?(name) klass = Class.new(ActiveJob::QueueAdapters::AdvancedSneakersAdapter::JobWrapper) const_set(name, klass) klass.include Sneakers::Worker klass.from_queue(queue_name, config.sneakers) klass end
delayed_publisher()
click to toggle source
# File lib/advanced_sneakers_activejob.rb, line 60 def delayed_publisher @delayed_publisher ||= AdvancedSneakersActiveJob::DelayedPublisher.new(**config.publisher_config) end
publisher()
click to toggle source
# File lib/advanced_sneakers_activejob.rb, line 56 def publisher @publisher ||= AdvancedSneakersActiveJob::Publisher.new(**config.publisher_config) end