Class: Dionysus::Producer::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/dionysus/producer/config.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#database_connection_providerObject

Returns the value of attribute database_connection_provider.



4
5
6
# File 'lib/dionysus/producer/config.rb', line 4

def database_connection_provider
  @database_connection_provider
end

#datadog_statsd_clientObject

Returns the value of attribute datadog_statsd_client.



4
5
6
# File 'lib/dionysus/producer/config.rb', line 4

def datadog_statsd_client
  @datadog_statsd_client
end

#default_partition_keyObject



35
36
37
# File 'lib/dionysus/producer/config.rb', line 35

def default_partition_key
  @default_partition_key || :account_id
end

#error_handlerObject



53
54
55
# File 'lib/dionysus/producer/config.rb', line 53

def error_handler
  @error_handler || Dionysus::Utils::NullErrorHandler
end

#event_busObject



27
28
29
# File 'lib/dionysus/producer/config.rb', line 27

def event_bus
  @event_bus || Dionysus::Utils::NullEventBus
end

#genesis_consistency_safety_delayObject



75
76
77
# File 'lib/dionysus/producer/config.rb', line 75

def genesis_consistency_safety_delay
  @genesis_consistency_safety_delay || 60.seconds
end

#hermes_event_producerObject



79
80
81
# File 'lib/dionysus/producer/config.rb', line 79

def hermes_event_producer
  @hermes_event_producer || Dionysus::Utils::NullHermesEventProducer
end

#high_priority_sidekiq_queueObject



93
94
95
# File 'lib/dionysus/producer/config.rb', line 93

def high_priority_sidekiq_queue
  @high_priority_sidekiq_queue || self.class.high_priority_sidekiq_queue
end

#include_serialized_at_in_payloadObject

Off by default so consumers, which fall back to the offset when the field is absent, can be rolled out first.



129
130
131
132
133
# File 'lib/dionysus/producer/config.rb', line 129

def include_serialized_at_in_payload
  return @include_serialized_at_in_payload if defined?(@include_serialized_at_in_payload)

  false
end

#instrumenterObject



23
24
25
# File 'lib/dionysus/producer/config.rb', line 23

def instrumenter
  @instrumenter || Dionysus::Utils::NullInstrumenter
end

#lock_clientObject



45
46
47
# File 'lib/dionysus/producer/config.rb', line 45

def lock_client
  @lock_client || Dionysus::Utils::NullLockClient
end

#lock_expiry_timeObject



49
50
51
# File 'lib/dionysus/producer/config.rb', line 49

def lock_expiry_time
  @lock_expiry_time || 10_000
end

#max_snapshot_attemptsObject

Off by default so it can be switched on per producer, and switched back off in one env change if the extra reads ever cost more than they are worth. How many times a payload may be re-serialized before the last attempt is published as it stands. This is the expensive half of publish_consistent_snapshots: a record written faster than it serializes fails the check on every attempt, so it pays the full serialization cost this many times over and still publishes a payload that may be torn. Lower it to bound that cost; 1 disables re-serialization while leaving the check (and its metric) in place.



108
109
110
# File 'lib/dionysus/producer/config.rb', line 108

def max_snapshot_attempts
  @max_snapshot_attempts || Dionysus::Producer::MAX_SNAPSHOT_ATTEMPTS
end

#observers_inline_maximum_sizeObject



97
98
99
# File 'lib/dionysus/producer/config.rb', line 97

def observers_inline_maximum_size
  @observers_inline_maximum_size || 1000
end

#outbox_modelObject

Returns the value of attribute outbox_model.



4
5
6
# File 'lib/dionysus/producer/config.rb', line 4

def outbox_model
  @outbox_model
end

#outbox_publishing_batch_sizeObject



57
58
59
# File 'lib/dionysus/producer/config.rb', line 57

def outbox_publishing_batch_size
  @outbox_publishing_batch_size || 100
end

#outbox_worker_publishing_delayObject



89
90
91
# File 'lib/dionysus/producer/config.rb', line 89

def outbox_worker_publishing_delay
  (@outbox_worker_publishing_delay || 0).to_d.seconds
end

#outbox_worker_sleep_secondsObject



39
40
41
42
43
# File 'lib/dionysus/producer/config.rb', line 39

def outbox_worker_sleep_seconds
  return BigDecimal("0.2") if @outbox_worker_sleep_seconds.nil?

  @outbox_worker_sleep_seconds.to_d
end

#publish_after_commitObject



83
84
85
86
87
# File 'lib/dionysus/producer/config.rb', line 83

def publish_after_commit
  return @publish_after_commit if defined?(@publish_after_commit)

  false
end

#publish_consistent_snapshotsObject

Re-serialize when a record moved while its payload was being built, so the payload describes a single moment. Off by default; the extra read costs one indexed column per message, and the re-serialization only happens on the records that were actually contended.



121
122
123
124
125
# File 'lib/dionysus/producer/config.rb', line 121

def publish_consistent_snapshots
  return @publish_consistent_snapshots if defined?(@publish_consistent_snapshots)

  false
end

#publish_with_uncached_readsObject



112
113
114
115
116
# File 'lib/dionysus/producer/config.rb', line 112

def publish_with_uncached_reads
  return @publish_with_uncached_reads if defined?(@publish_with_uncached_reads)

  false
end

#publisher_service_nameObject



71
72
73
# File 'lib/dionysus/producer/config.rb', line 71

def publisher_service_name
  @publisher_service_name || Karafka.producer.id
end

#registryObject

Returns the value of attribute registry.



4
5
6
# File 'lib/dionysus/producer/config.rb', line 4

def registry
  @registry
end

#remove_consecutive_duplicates_before_publishingObject



135
136
137
138
139
# File 'lib/dionysus/producer/config.rb', line 135

def remove_consecutive_duplicates_before_publishing
  return @remove_consecutive_duplicates_before_publishing if defined?(@remove_consecutive_duplicates_before_publishing)

  false
end

#sidekiq_queueObject



67
68
69
# File 'lib/dionysus/producer/config.rb', line 67

def sidekiq_queue
  @sidekiq_queue || self.class.default_sidekiq_queue
end

#soft_delete_columnObject



31
32
33
# File 'lib/dionysus/producer/config.rb', line 31

def soft_delete_column
  @soft_delete_column || "canceled_at"
end

#transaction_providerObject

Returns the value of attribute transaction_provider.



4
5
6
# File 'lib/dionysus/producer/config.rb', line 4

def transaction_provider
  @transaction_provider
end

#transactional_outbox_enabledObject



61
62
63
64
65
# File 'lib/dionysus/producer/config.rb', line 61

def transactional_outbox_enabled
  return @transactional_outbox_enabled if defined?(@transactional_outbox_enabled)

  true
end

Class Method Details

.default_sidekiq_queueObject



15
16
17
# File 'lib/dionysus/producer/config.rb', line 15

def self.default_sidekiq_queue
  :dionysus
end

.high_priority_sidekiq_queueObject



19
20
21
# File 'lib/dionysus/producer/config.rb', line 19

def self.high_priority_sidekiq_queue
  :dionysus_high_priority
end