Class: SolidQueue::Dispatcher

Inherits:
Processes::Base show all
Includes:
Processes::Poller
Defined in:
lib/solid_queue/dispatcher.rb

Defined Under Namespace

Classes: ConcurrencyMaintenance, RecurringSchedule, RecurringTask

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Processes::Runnable

#start, #stop

Methods included from Processes::Supervised

#supervised_by

Methods inherited from Processes::Base

#hostname, #kind, #pid

Methods included from AppExecutor

#handle_thread_error, #wrap_in_app_executor

Methods included from Processes::Interruptible

#wake_up

Methods included from Processes::Procline

#procline

Constructor Details

#initialize(**options) ⇒ Dispatcher

Returns a new instance of Dispatcher.



12
13
14
15
16
17
18
19
20
# File 'lib/solid_queue/dispatcher.rb', line 12

def initialize(**options)
  options = options.dup.with_defaults(SolidQueue::Configuration::DISPATCHER_DEFAULTS)

  @batch_size = options[:batch_size]
  @polling_interval = options[:polling_interval]

  @concurrency_maintenance = ConcurrencyMaintenance.new(options[:concurrency_maintenance_interval], options[:batch_size]) if options[:concurrency_maintenance]
  @recurring_schedule = RecurringSchedule.new(options[:recurring_tasks])
end

Instance Attribute Details

#batch_sizeObject

Returns the value of attribute batch_size.



7
8
9
# File 'lib/solid_queue/dispatcher.rb', line 7

def batch_size
  @batch_size
end

#concurrency_maintenanceObject

Returns the value of attribute concurrency_maintenance.



7
8
9
# File 'lib/solid_queue/dispatcher.rb', line 7

def concurrency_maintenance
  @concurrency_maintenance
end

#recurring_scheduleObject

Returns the value of attribute recurring_schedule.



7
8
9
# File 'lib/solid_queue/dispatcher.rb', line 7

def recurring_schedule
  @recurring_schedule
end

Instance Method Details

#metadataObject



22
23
24
# File 'lib/solid_queue/dispatcher.rb', line 22

def 
  super.merge(batch_size: batch_size, concurrency_maintenance_interval: concurrency_maintenance&.interval, recurring_schedule: recurring_schedule.tasks.presence)
end