Initial commit
This commit is contained in:
44
app/services/schedule_pipeline/schedule_pipeline.rb
Normal file
44
app/services/schedule_pipeline/schedule_pipeline.rb
Normal file
@@ -0,0 +1,44 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative '../log/loggable'
|
||||
require_relative 'errors'
|
||||
require_relative 'publish_schedule'
|
||||
require_relative 'process_schedule'
|
||||
require_relative 'fetch_schedule'
|
||||
|
||||
module SchedulePipeline
|
||||
# Schedule Processing Pipeline
|
||||
class SchedulePipeline
|
||||
include Log::Loggable
|
||||
|
||||
def initialize(queue_factory)
|
||||
errors = Errors.new
|
||||
processed_schedules_queue = queue_factory.for_name(:processed_schedules)
|
||||
publish_schedule = PublishSchedule.new(processed_schedules_queue, errors)
|
||||
unprocessed_schedules_queue = queue_factory.for_name(:unprocessed_schedules)
|
||||
process_schedule = ProcessSchedule.new(unprocessed_schedules_queue, processed_schedules_queue, errors)
|
||||
fetch_schedule_queue = queue_factory.for_name(:fetch_vendor_schedules)
|
||||
fetch_schedule = FetchSchedule.new(fetch_schedule_queue, unprocessed_schedules_queue, errors)
|
||||
@queues = [processed_schedules_queue, unprocessed_schedules_queue, fetch_schedule_queue]
|
||||
@stages = [publish_schedule, process_schedule, fetch_schedule]
|
||||
end
|
||||
|
||||
def start
|
||||
stages.each(&:start)
|
||||
logger.info "Started Schedule Pipeline"
|
||||
end
|
||||
|
||||
def stop
|
||||
stages.reverse_each(&:stop)
|
||||
end
|
||||
|
||||
private
|
||||
def stages
|
||||
@stages
|
||||
end
|
||||
|
||||
def queues
|
||||
@queues
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user