dionysus-rb 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +2 -1
- data/lib/dionysus/consumer/config.rb +10 -1
- data/lib/dionysus/consumer/params_batch_processor.rb +8 -4
- data/lib/dionysus/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8297895cea885c4df1b824188297d199eed0eb00f4c52f102842e8468c02728a
|
4
|
+
data.tar.gz: b71aff2bf67cffe2a5be1e9befd29f3651a23501ee107806b7c2c6eef85f744f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ad54974b1e4956cd76f94e865c225dfe1beb2b339a29b6a594faf1671f59b4388d9a39a420788f57692e168edb1fc067e351a96d7d5883ec237f051f319eb21
|
7
|
+
data.tar.gz: 428894822478c3ed6296eb51c7440049fe39dd3ec54220abc038e1786b3f4468e48ee745cd2cadaaf7a419b9b093e79628cfb0be476602d352c6317280771685
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1136,7 +1136,8 @@ Dionysus::Consumer.configure do |config|
|
|
1136
1136
|
config.synced_data_attribute = :synced_data # required, default: :synced_data
|
1137
1137
|
config.resolve_synced_data_hash_proc = ->(record) { record.synced_data_model.synced_data_hash } # optional, defaults to ->(record) { record.public_send(Dionysus::Consumer.configuration.synced_data_attribute).to_h }
|
1138
1138
|
config.sidekiq_queue = :default # optional, defaults to `:dionysus`
|
1139
|
-
config.message_filter = FilterIgnoringLargeMessageToAvoidOutofMemoryErrors.new(error_handler: Sentry) # not required, defaults to Dionysus::Utils::DefaultMessageFilter, which doesn't ignore any messages. It can be useful when you want to ignore some messages, e.g. some very large ones that would cause OOM error. Check the implementation of `Dionysus::Utils::DefaultMessageFilter for more details to understand what kind of arguments are available to set the condition. `error_handler` needs to implement Sentry-like interface.
|
1139
|
+
config.message_filter = FilterIgnoringLargeMessageToAvoidOutofMemoryErrors.new(error_handler: Sentry) # DEPRECATED - not required, defaults to Dionysus::Utils::DefaultMessageFilter, which doesn't ignore any messages. It can be useful when you want to ignore some messages, e.g. some very large ones that would cause OOM error. Check the implementation of `Dionysus::Utils::DefaultMessageFilter for more details to understand what kind of arguments are available to set the condition. `error_handler` needs to implement Sentry-like interface. Kept for backwards compatibility, please use `message_filters` instead.
|
1140
|
+
config.message_filters = [FilterIgnoringLargeMessageToAvoidOutofMemoryErrors.new(error_handler: Sentry)] # not required, defaults to [Dionysus::Utils::DefaultMessageFilter], which doesn't ignore any messages. It can be useful when you want to ignore some messages, e.g. some very large ones that would cause OOM error. Check the implementation of `Dionysus::Utils::DefaultMessageFilter for more details to understand what kind of arguments are available to set the condition. `error_handler` needs to implement Sentry-like interface.
|
1140
1141
|
|
1141
1142
|
# if you ever need to provide mapping:
|
1142
1143
|
|
@@ -6,7 +6,7 @@ class Dionysus::Consumer::Config
|
|
6
6
|
:instrumenter, :event_bus, :soft_delete_strategy, :soft_deleted_at_timestamp_attribute,
|
7
7
|
:synced_created_at_timestamp_attribute, :synced_updated_at_timestamp_attribute, :synced_id_attribute,
|
8
8
|
:synced_data_attribute, :consumer_base_class, :retry_provider, :resolve_synced_data_hash_proc, :sidekiq_queue,
|
9
|
-
:
|
9
|
+
:message_filters
|
10
10
|
|
11
11
|
def self.default_sidekiq_queue
|
12
12
|
:dionysus
|
@@ -94,4 +94,13 @@ class Dionysus::Consumer::Config
|
|
94
94
|
@message_filter || Dionysus::Utils::DefaultMessageFilter.new(error_handler:
|
95
95
|
Dionysus::Utils::NullErrorHandler)
|
96
96
|
end
|
97
|
+
|
98
|
+
def message_filter=(val)
|
99
|
+
@message_filter = val
|
100
|
+
self.message_filters = [val]
|
101
|
+
end
|
102
|
+
|
103
|
+
def message_filters
|
104
|
+
@message_filters || Array.wrap(message_filter)
|
105
|
+
end
|
97
106
|
end
|
@@ -27,8 +27,9 @@ class Dionysus::Consumer::ParamsBatchProcessor
|
|
27
27
|
transformed_data = Dionysus::Consumer::Deserializer.new(data).deserialize
|
28
28
|
end
|
29
29
|
|
30
|
-
if
|
31
|
-
notify_about_ignored_message(topic: topic, message: message,
|
30
|
+
if (applicable_message_filter = find_applicable_message_filter(topic, message, transformed_data))
|
31
|
+
applicable_message_filter.notify_about_ignored_message(topic: topic, message: message,
|
32
|
+
transformed_data: transformed_data)
|
32
33
|
next
|
33
34
|
end
|
34
35
|
|
@@ -50,8 +51,11 @@ class Dionysus::Consumer::ParamsBatchProcessor
|
|
50
51
|
|
51
52
|
private
|
52
53
|
|
53
|
-
delegate :
|
54
|
-
|
54
|
+
delegate :message_filters, to: :config
|
55
|
+
|
56
|
+
def find_applicable_message_filter(topic, message, transformed_data)
|
57
|
+
message_filters.find { |f| f.ignore_message?(topic: topic, message: message, transformed_data: transformed_data) }
|
58
|
+
end
|
55
59
|
|
56
60
|
def instrument(label, options = {}, &block)
|
57
61
|
config.instrumenter.instrument(label, options, &block)
|
data/lib/dionysus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dionysus-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karol Galanciak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|