Class: EventSourcery::EventProcessing::ESPRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/event_sourcery/event_processing/esp_runner.rb

Overview

NOTE: databases should be disconnected before running this EventSourcery.config.postgres.event_store_database.disconnect

Instance Method Summary collapse

Constructor Details

#initialize(event_processors:, event_source:, max_seconds_for_processes_to_terminate: 30, shutdown_requested: false, after_fork: nil) ⇒ ESPRunner

Returns a new instance of ESPRunner.



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/event_sourcery/event_processing/esp_runner.rb', line 6

def initialize(event_processors:,
               event_source:,
               max_seconds_for_processes_to_terminate: 30,
               shutdown_requested: false,
               after_fork: nil)
  @event_processors = event_processors
  @event_source = event_source
  @pids = []
  @max_seconds_for_processes_to_terminate = max_seconds_for_processes_to_terminate
  @shutdown_requested = shutdown_requested
  @exit_status = true
  @after_fork = after_fork
end

Instance Method Details

#start!Object

Start each Event Stream Processor in a new child process.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/event_sourcery/event_processing/esp_runner.rb', line 21

def start!
  with_logging do
    start_processes
    listen_for_shutdown_signals
    wait_till_shutdown_requested
    record_terminated_processes
    terminate_remaining_processes
    until all_processes_terminated? || waited_long_enough?
      record_terminated_processes
    end
    kill_remaining_processes
    record_terminated_processes until all_processes_terminated?
  end
  exit_indicating_status_of_processes
end