Class: ThreadJob::Scheduler

Inherits:
Object
  • Object
show all
Defined in:
lib/thread_job/scheduler.rb

Instance Method Summary collapse

Constructor Details

#initialize(queue_name, job_store = ThreadJob::Memory::Store.new, poll_delay_seconds = 5, thread_pool_size = 5, logger = Logger.new(STDOUT)) ⇒ Scheduler

Returns a new instance of Scheduler.



6
7
8
9
10
11
12
13
# File 'lib/thread_job/scheduler.rb', line 6

def initialize(queue_name, job_store=ThreadJob::Memory::Store.new, poll_delay_seconds=5, thread_pool_size=5, logger=Logger.new(STDOUT))
  @job_store = job_store
  @logger = logger
  @queue_name = queue_name
  @poll_delay = poll_delay_seconds
  @scheduler_thread = nil
  @thread_pool = ThreadPool.new(thread_pool_size, logger)
end

Instance Method Details

#add_job(job_name, job) ⇒ Object



31
32
33
34
# File 'lib/thread_job/scheduler.rb', line 31

def add_job(job_name, job)
  @logger.info("[Scheduler] Added job: '#{job_name}' to the '#{@queue_name}' queue")
  @job_store.save_job(@queue_name, job_name, job)
end

#add_workers(num_workers) ⇒ Object



36
37
38
39
# File 'lib/thread_job/scheduler.rb', line 36

def add_workers(num_workers)
  @logger.info("[Scheduler] Adding #{num_workers} to the worker pool")
  @thread_pool.add_workers(num_workers)
end

#killObject



21
22
23
24
# File 'lib/thread_job/scheduler.rb', line 21

def kill
  @logger.info("[Scheduler] scheduler stopping...")
  @scheduler_thread.kill
end

#kill_workersObject



26
27
28
29
# File 'lib/thread_job/scheduler.rb', line 26

def kill_workers
  @logger.info("[Scheduler] Stopping all worker threads")
  @thread_pool.kill
end

#startObject



15
16
17
18
19
# File 'lib/thread_job/scheduler.rb', line 15

def start
  return @scheduler_thread = Thread.new do
    do_start
  end
end