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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf3312592aa3f39392dc5ea53bb55a026cdf1dbde5cce0fc598f50a99d1d499e
4
- data.tar.gz: 0c302683ed17704b861bd1d08eb3d87f549e7102af46acd23cccd1be0163c329
3
+ metadata.gz: 8297895cea885c4df1b824188297d199eed0eb00f4c52f102842e8468c02728a
4
+ data.tar.gz: b71aff2bf67cffe2a5be1e9befd29f3651a23501ee107806b7c2c6eef85f744f
5
5
  SHA512:
6
- metadata.gz: d788ee2c0aadac5bd2d8510517f941043ef032cb22d049ed8457a5ce68a26cd799ef4370fd58cb89f2999ade8e4dfd174fcebe39d42ed702f4e235060dc877f1
7
- data.tar.gz: a3e25434d96c3579b6185b9e6cfd6d6bd4e87aba52eb7e5e8b7736addf25aada4964bbf1ada59d9c4ccf0051b5b251bfe207669ce08d4852836ca35e8e5dc1d9
6
+ metadata.gz: 3ad54974b1e4956cd76f94e865c225dfe1beb2b339a29b6a594faf1671f59b4388d9a39a420788f57692e168edb1fc067e351a96d7d5883ec237f051f319eb21
7
+ data.tar.gz: 428894822478c3ed6296eb51c7440049fe39dd3ec54220abc038e1786b3f4468e48ee745cd2cadaaf7a419b9b093e79628cfb0be476602d352c6317280771685
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0]
4
+ - Allow to provide multiple message filters. `message_filter` stays for backwards compatibility and depends on `message_filters`.
5
+
3
6
  ## [0.2.0]
4
7
  - Fix creation of outbox records when updating a record that was soft-deleted
5
8
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dionysus-rb (0.2.0)
4
+ dionysus-rb (0.3.0)
5
5
  activerecord (>= 5)
6
6
  activesupport (>= 3.2)
7
7
  concurrent-ruby
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
- :message_filter
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 ignore_message?(topic: topic, message: message, transformed_data: transformed_data)
31
- notify_about_ignored_message(topic: topic, message: message, transformed_data: transformed_data)
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 :message_filter, to: :config
54
- delegate :ignore_message?, :notify_about_ignored_message, to: :message_filter
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)
@@ -3,5 +3,5 @@
3
3
  module Dionysus
4
4
  module Version
5
5
  end
6
- VERSION = "0.2.0"
6
+ VERSION = "0.3.0"
7
7
  end
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.2.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-21 00:00:00.000000000 Z
11
+ date: 2024-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord