messaging 4.0.10 → 4.0.12

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: 8b33d86158fa568ad2d0a28cd0ba116148c9138b257b0d7debed82b435972af2
4
+ data.tar.gz: 71d5f06396fd5bc96af015dabb3877c6a90673694d0a4d139873766817262adf
5
5
  SHA512:
6
- metadata.gz: 1a5455de04697b32d322a2381efc7d8568d35f19258bf409f46f523a535af15f2edbc960d822d43a71cc58f002a207e9bab1789863c4fc2288f4cf14f6845fc9
7
- data.tar.gz: eaa2d8765a361091a609fcdf5514ec6e7d556f1eaf05bb2facef4d4a79eb81e614b402cb9da12718f5607899283fc341d2fd43a2ed16ee4e845cc2ff14845491
6
+ metadata.gz: 65588cd136c5b5726cbcf996f1f0ce9fcd8d511fd612f5500e365bbb22741a02875743106a8b1df54eaaeae6a5011368017b946d0ae354d826d95560f5e06e3b
7
+ data.tar.gz: ce5b8a54d1faa1b107e130afbee144f2cee506a23e49087f688426a287db137d9054aefe81be1bfee1ae2d2d606bb9e26ea1290db49678e9eb4be76532f762ce
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.12)
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,16 @@ 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
54
+ @attributes = @attributes.except('id') if ::Rails::VERSION::MAJOR == 2
46
55
  save
47
56
  end
48
57
 
@@ -51,17 +60,26 @@ module Messaging
51
60
  Meter.histogram('messaging.consumer.lag', unprocessed_messages_count, tags: { consumer: name })
52
61
  messages = fetch_messages
53
62
  messages.each do |message|
54
- process_message(message)
63
+ break unless process_message(message)
55
64
  end
56
- save if messages.any?
65
+ save_position
57
66
  pause_polling_for_5_s unless messages.any?
58
67
  end
68
+ ensure
69
+ save_position
70
+ end
71
+
72
+ def save_position
73
+ return unless last_processed_position_changed? || last_processed_transaction_id_changed?
74
+ recreate_consumer_record unless self.class.exists? id
75
+ save
59
76
  end
60
77
 
61
78
  def process_message(message)
62
79
  Middleware.run(Config.consumer.middlewares, message) { handle message }
63
80
  self.last_processed_position = message.global_position
64
81
  self.last_processed_transaction_id = message.transaction_id
82
+ true
65
83
  rescue StandardError => e
66
84
  ExceptionHandler.call(e,
67
85
  {
@@ -72,8 +90,12 @@ module Messaging
72
90
  }
73
91
  )
74
92
 
93
+ pause_to_avoid_creating_exception_storm
94
+ false
95
+ end
96
+
97
+ def pause_to_avoid_creating_exception_storm
75
98
  sleep 10
76
- retry if @running
77
99
  end
78
100
 
79
101
  def pause_polling_for_5_s
@@ -1,3 +1,3 @@
1
1
  module Messaging
2
- VERSION = '4.0.10'.freeze
2
+ VERSION = '4.0.12'.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.12
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: 2025-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord