messaging 4.0.10 → 4.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d5179d662e2464f60e54d8a6f9fbf009837f173b25bcaac13c8d1e73138f5dd
4
- data.tar.gz: fb094faf716da285d0ebcb57ae2330ea31c4edd493fe6b4f3b94cbcdb7f5459e
3
+ metadata.gz: df024471a9ebf943e39cf252ccdbfff8c1b0ed44099d6d4ae2a86625cc25920a
4
+ data.tar.gz: 3e105b704a432035b7482b39ce5f01b27a591cff6c0960eb01347e1d4ed62828
5
5
  SHA512:
6
- metadata.gz: 1a5455de04697b32d322a2381efc7d8568d35f19258bf409f46f523a535af15f2edbc960d822d43a71cc58f002a207e9bab1789863c4fc2288f4cf14f6845fc9
7
- data.tar.gz: eaa2d8765a361091a609fcdf5514ec6e7d556f1eaf05bb2facef4d4a79eb81e614b402cb9da12718f5607899283fc341d2fd43a2ed16ee4e845cc2ff14845491
6
+ metadata.gz: c279fb04ec1eeae67735d59434f3b5579ed2ee900bb75cf9f3bea56c995f8bab521e113b4797c5d602f4f8431521590fa6f165f15ae54fa70ef4791643e4d696
7
+ data.tar.gz: 5f58c6e116b7c2e39ed3808aa133e473112c784bdbe01aad7e2167aca4d65aac1e3dd736a1dd2184aec36b1f08524fa2155f5945ce5ab6e5075245c75c93b5b4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- messaging (4.0.10)
4
+ messaging (4.0.11)
5
5
  activerecord
6
6
  activesupport
7
7
  after_transaction
@@ -23,7 +23,6 @@ module Messaging
23
23
 
24
24
  def stop
25
25
  @running = false
26
- save
27
26
  Messaging.logger.info "[#{name}] Consumer stopping"
28
27
  end
29
28
 
@@ -43,6 +42,15 @@ module Messaging
43
42
  return if last_processed_transaction_id.present?
44
43
 
45
44
  self.last_processed_transaction_id = self.class.latest_known_transaction_id
45
+ save_position
46
+ rescue ActiveRecord::RecordNotFound => e
47
+ recreate_consumer_record
48
+ retry
49
+ end
50
+
51
+ def recreate_consumer_record
52
+ self.id = nil
53
+ @new_record = true
46
54
  save
47
55
  end
48
56
 
@@ -51,17 +59,24 @@ module Messaging
51
59
  Meter.histogram('messaging.consumer.lag', unprocessed_messages_count, tags: { consumer: name })
52
60
  messages = fetch_messages
53
61
  messages.each do |message|
54
- process_message(message)
62
+ break unless process_message(message)
55
63
  end
56
- save if messages.any?
64
+ save_position
57
65
  pause_polling_for_5_s unless messages.any?
58
66
  end
67
+ ensure
68
+ save_position
69
+ end
70
+
71
+ def save_position
72
+ save if last_processed_position_changed? || last_processed_transaction_id_changed?
59
73
  end
60
74
 
61
75
  def process_message(message)
62
76
  Middleware.run(Config.consumer.middlewares, message) { handle message }
63
77
  self.last_processed_position = message.global_position
64
78
  self.last_processed_transaction_id = message.transaction_id
79
+ true
65
80
  rescue StandardError => e
66
81
  ExceptionHandler.call(e,
67
82
  {
@@ -71,9 +86,14 @@ module Messaging
71
86
  message: message.inspect
72
87
  }
73
88
  )
89
+ Messaging.logger.error "[#{name}] Error processing message: #{e.message}"
90
+
91
+ pause_to_avoid_creating_exception_storm
92
+ false
93
+ end
74
94
 
95
+ def pause_to_avoid_creating_exception_storm
75
96
  sleep 10
76
- retry if @running
77
97
  end
78
98
 
79
99
  def pause_polling_for_5_s
@@ -1,3 +1,3 @@
1
1
  module Messaging
2
- VERSION = '4.0.10'.freeze
2
+ VERSION = '4.0.11'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: messaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.10
4
+ version: 4.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bukowskis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-27 00:00:00.000000000 Z
11
+ date: 2024-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord