Class: RailsTransactionalOutbox
- Inherits:
-
Object
- Object
- RailsTransactionalOutbox
show all
- Defined in:
- lib/rails_transactional_outbox.rb,
lib/rails_transactional_outbox/runner.rb,
lib/rails_transactional_outbox/monitor.rb,
lib/rails_transactional_outbox/railtie.rb,
lib/rails_transactional_outbox/tracers.rb,
lib/rails_transactional_outbox/version.rb,
lib/rails_transactional_outbox/event_type.rb,
lib/rails_transactional_outbox/health_check.rb,
lib/rails_transactional_outbox/outbox_model.rb,
lib/rails_transactional_outbox/configuration.rb,
lib/rails_transactional_outbox/error_handlers.rb,
lib/rails_transactional_outbox/reliable_model.rb,
lib/rails_transactional_outbox/latency_tracker.rb,
lib/rails_transactional_outbox/null_lock_client.rb,
lib/rails_transactional_outbox/record_processor.rb,
lib/rails_transactional_outbox/record_processors.rb,
lib/rails_transactional_outbox/exponential_backoff.rb,
lib/rails_transactional_outbox/tracers/null_tracer.rb,
lib/rails_transactional_outbox/outbox_entry_factory.rb,
lib/rails_transactional_outbox/runner_sleep_interval.rb,
lib/rails_transactional_outbox/tracers/datadog_tracer.rb,
lib/rails_transactional_outbox/datadog_latency_reporter.rb,
lib/rails_transactional_outbox/outbox_entries_processor.rb,
lib/rails_transactional_outbox/outbox_entries_processors.rb,
lib/rails_transactional_outbox/datadog_latency_reporter_job.rb,
lib/rails_transactional_outbox/record_processors/base_processor.rb,
lib/rails_transactional_outbox/reliable_model/reliable_callback.rb,
lib/rails_transactional_outbox/error_handlers/null_error_handler.rb,
lib/rails_transactional_outbox/datadog_latency_reporter_scheduler.rb,
lib/rails_transactional_outbox/outbox_entries_processors/base_processor.rb,
lib/rails_transactional_outbox/record_processors/active_record_processor.rb,
lib/rails_transactional_outbox/reliable_model/reliable_callbacks_registry.rb,
lib/rails_transactional_outbox/outbox_entries_processors/non_ordered_processor.rb,
lib/rails_transactional_outbox/outbox_entries_processors/ordered_by_causality_key_processor.rb
Defined Under Namespace
Modules: OutboxModel, ReliableModel, Tracers, Version
Classes: Configuration, DatadogLatencyReporter, DatadogLatencyReporterJob, DatadogLatencyReporterScheduler, ErrorHandlers, EventType, ExponentialBackoff, HealthCheck, LatencyTracker, Monitor, NullLockClient, OutboxEntriesProcessor, OutboxEntriesProcessors, OutboxEntryFactory, Railtie, RecordProcessor, RecordProcessors, Runner, RunnerSleepInterval
Constant Summary
collapse
- VERSION =
"1.2.0"
Class Method Summary
collapse
Class Method Details
27
28
29
|
# File 'lib/rails_transactional_outbox.rb', line 27
def self.configure
yield configuration
end
|
.enable_outbox_worker_healthcheck ⇒ Object
43
44
45
46
47
|
# File 'lib/rails_transactional_outbox.rb', line 43
def self.enable_outbox_worker_healthcheck
monitor.subscribe("rails_transactional_outbox.started") { outbox_worker_health_check.register_heartbeat }
monitor.subscribe("rails_transactional_outbox.stopped") { outbox_worker_health_check.worker_stopped }
monitor.subscribe("rails_transactional_outbox.heartbeat") { outbox_worker_health_check.register_heartbeat }
end
|
.loader ⇒ Object
14
15
16
17
18
19
20
21
|
# File 'lib/rails_transactional_outbox.rb', line 14
def self.loader
@loader ||= Zeitwerk::Loader.for_gem.tap do |loader|
loader.ignore(
"#{__dir__}/rails-transactional-outbox.rb",
"#{__dir__}/tracers/datadog_tracer.rb"
)
end
end
|
.outbox_worker_health_check ⇒ Object
.reset ⇒ Object
35
36
37
|
# File 'lib/rails_transactional_outbox.rb', line 35
def self.reset
@configuration = nil
end
|
.start_outbox_worker(threads_number: 1) ⇒ Object
49
50
51
52
53
54
|
# File 'lib/rails_transactional_outbox.rb', line 49
def self.start_outbox_worker(threads_number: 1)
runners = (1..threads_number).map { RailsTransactionalOutbox::Runner.new(config: configuration) }
executor = Sigurd::Executor.new(runners, sleep_seconds: 5, logger: configuration.logger)
signal_handler = Sigurd::SignalHandler.new(executor)
signal_handler.run!
end
|