bbk-app 1.1.3.334031 → 1.1.4.345154

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: c2cf194e273e7b90cb1b547aba33d10561b172ec445882c79121d7ced7136c0e
4
- data.tar.gz: 1539c01f72926b962f0ca84e0a726ea6e2bf1a78d6cb7674755ffdf02cadb27d
3
+ metadata.gz: 2d8e2d07476d0e9a71ffbc2b121ce3c322ce266fac70cbb0f3067616072934f4
4
+ data.tar.gz: 1b6ae740fbac59dcbd3e8599e7d7890ef90cd5f1c9c21303e96639d336050b58
5
5
  SHA512:
6
- metadata.gz: 4a46fc8f905a492b112d7975c11243296d267b5c6d03b90914fdd01ae3e9bc9d78612210e64ab554f9b5a0b8ba65ee9180c4862c40ae0cc34614763436255c37
7
- data.tar.gz: 4d8e0b8283c57392fd8cecf862f9d0961d787522aeea2af22d13d20e4744bf1bd4a3a2280f3430bbf9409a1860da1027e33a364c233435bb6944fbdfc90877b6
6
+ metadata.gz: c87da2655df84a605253b25e151773419adf0f3484f39e9f0f61c6ecbc5c0e84afad9003302d6f52ef7f1f68cbe113557abf170c0ee6d47746f8aaada1e5c0a3
7
+ data.tar.gz: 29818a7ca1faac33dad799731ed619cbb9095aceff39e1109af7cc03a055594ae24d876b319498855ca0b854af26d06c636067f0d5a6f15f9c62d4f7a64e47d1
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bbk-app (1.1.3.334031)
5
- activesupport (>= 6.0)
4
+ bbk-app (1.1.4)
5
+ activesupport (~> 7.1)
6
6
  bbk-utils (> 1.0.1)
7
7
  oj
8
8
  timeouter
@@ -10,17 +10,24 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activemodel (6.1.4.4)
14
- activesupport (= 6.1.4.4)
15
- activerecord (6.1.4.4)
16
- activemodel (= 6.1.4.4)
17
- activesupport (= 6.1.4.4)
18
- activesupport (6.1.4.4)
19
- concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ activemodel (7.2.3)
14
+ activesupport (= 7.2.3)
15
+ activerecord (7.2.3)
16
+ activemodel (= 7.2.3)
17
+ activesupport (= 7.2.3)
18
+ timeout (>= 0.4.0)
19
+ activesupport (7.2.3)
20
+ base64
21
+ benchmark (>= 0.3)
22
+ bigdecimal
23
+ concurrent-ruby (~> 1.0, >= 1.3.1)
24
+ connection_pool (>= 2.2.5)
25
+ drb
20
26
  i18n (>= 1.6, < 2)
27
+ logger (>= 1.4.2)
21
28
  minitest (>= 5.1)
22
- tzinfo (~> 2.0)
23
- zeitwerk (~> 2.3)
29
+ securerandom (>= 0.3)
30
+ tzinfo (~> 2.0, >= 2.0.5)
24
31
  addressable (2.8.0)
25
32
  public_suffix (>= 2.0.2, < 5.0)
26
33
  amq-protocol (2.3.2)
@@ -30,9 +37,11 @@ GEM
30
37
  descendants_tracker (~> 0.0.4)
31
38
  ice_nine (~> 0.11.0)
32
39
  thread_safe (~> 0.3, >= 0.3.1)
40
+ base64 (0.3.0)
33
41
  bbk-utils (1.0.1.147183)
34
42
  activesupport (>= 6.0)
35
43
  russian
44
+ benchmark (0.5.0)
36
45
  bigdecimal (3.3.1)
37
46
  bunny (2.19.0)
38
47
  amq-protocol (~> 2.3, >= 2.3.1)
@@ -42,12 +51,19 @@ GEM
42
51
  byebug (11.1.3)
43
52
  coercible (1.0.0)
44
53
  descendants_tracker (~> 0.0.1)
45
- concurrent-ruby (1.1.9)
46
- database_cleaner (1.99.0)
54
+ concurrent-ruby (1.3.5)
55
+ connection_pool (3.0.1)
56
+ database_cleaner (2.1.0)
57
+ database_cleaner-active_record (>= 2, < 3)
58
+ database_cleaner-active_record (2.2.2)
59
+ activerecord (>= 5.a)
60
+ database_cleaner-core (~> 2.0)
61
+ database_cleaner-core (2.0.1)
47
62
  descendants_tracker (0.0.4)
48
63
  thread_safe (~> 0.3, >= 0.3.1)
49
64
  diff-lcs (1.5.0)
50
65
  docile (1.4.0)
66
+ drb (2.2.3)
51
67
  equalizer (0.0.11)
52
68
  erubis (2.7.0)
53
69
  faker (2.19.0)
@@ -61,15 +77,16 @@ GEM
61
77
  path_expander (~> 1.0)
62
78
  ruby_parser (~> 3.1, > 3.1.0)
63
79
  sexp_processor (~> 4.8)
64
- i18n (1.8.11)
80
+ i18n (1.14.7)
65
81
  concurrent-ruby (~> 1.0)
66
82
  ice_nine (0.11.2)
67
83
  kwalify (0.7.2)
68
84
  launchy (2.5.0)
69
85
  addressable (~> 2.7)
70
- mini_portile2 (2.8.8)
71
- minitest (5.15.0)
72
- oj (3.16.11)
86
+ logger (1.7.0)
87
+ mini_portile2 (2.8.9)
88
+ minitest (5.26.2)
89
+ oj (3.16.13)
73
90
  bigdecimal (>= 3.0)
74
91
  ostruct (>= 0.2)
75
92
  ostruct (0.6.3)
@@ -129,6 +146,7 @@ GEM
129
146
  virtus (~> 1.0)
130
147
  russian (0.6.0)
131
148
  i18n (>= 0.5.0)
149
+ securerandom (0.4.1)
132
150
  set (1.1.0)
133
151
  sexp_processor (4.16.0)
134
152
  simplecov (0.21.2)
@@ -144,15 +162,17 @@ GEM
144
162
  sorted_set (1.0.3)
145
163
  rbtree
146
164
  set (~> 1.0)
147
- sqlite3 (1.7.3)
165
+ sqlite3 (2.0.4)
148
166
  mini_portile2 (~> 2.8.0)
149
- sqlite3 (1.7.3-x86_64-linux)
167
+ sqlite3 (2.0.4-x86_64-linux-gnu)
168
+ sqlite3 (2.0.4-x86_64-linux-musl)
150
169
  terminal-table (3.0.2)
151
170
  unicode-display_width (>= 1.1.1, < 3)
152
171
  thread_safe (0.3.6)
172
+ timeout (0.4.4)
153
173
  timeouter (0.1.3.38794)
154
174
  tty-which (0.4.2)
155
- tzinfo (2.0.4)
175
+ tzinfo (2.0.6)
156
176
  concurrent-ruby (~> 1.0)
157
177
  unicode-display_width (2.1.0)
158
178
  virtus (1.0.5)
@@ -160,7 +180,6 @@ GEM
160
180
  coercible (~> 1.0)
161
181
  descendants_tracker (~> 0.0, >= 0.0.3)
162
182
  equalizer (~> 0.0, >= 0.0.9)
163
- zeitwerk (2.5.3)
164
183
 
165
184
  PLATFORMS
166
185
  ruby
@@ -168,12 +187,12 @@ PLATFORMS
168
187
  x86_64-linux-musl
169
188
 
170
189
  DEPENDENCIES
171
- activerecord (~> 6.0)
190
+ activerecord (~> 7.1)
172
191
  bbk-app!
173
192
  bundler (~> 2.0)
174
193
  bunny-mock (~> 1.7.0)
175
194
  byebug
176
- database_cleaner (~> 1.7)
195
+ database_cleaner (~> 2.1.0)
177
196
  faker (~> 2)
178
197
  rake (~> 12.0)
179
198
  rspec (~> 3.0)
@@ -182,7 +201,7 @@ DEPENDENCIES
182
201
  rubycritic
183
202
  simplecov
184
203
  simplecov-console
185
- sqlite3 (~> 1.4)
204
+ sqlite3 (~> 2.0.0)
186
205
 
187
206
  BUNDLED WITH
188
207
  2.2.33
@@ -0,0 +1,49 @@
1
+ require 'bbk/app/dispatcher/message_stream'
2
+
3
+ module BBK
4
+ module App
5
+ class Dispatcher
6
+ class DirectStreamStrategy
7
+
8
+ def initialize(pool, logger:)
9
+ @pool = pool
10
+ @logger = logger
11
+ @stopped = false
12
+ end
13
+
14
+ def run(consumers, &block)
15
+ @block = block
16
+ @unblocker = Queue.new
17
+
18
+ consumers.each {|cons| cons.run(self) }
19
+ @pool.wait_for_termination(0)
20
+
21
+ begin
22
+ @pool.shutdown
23
+ rescue StandardError
24
+ nil
25
+ end
26
+ @pool.kill unless @pool.wait_for_termination(@stop_queue_timeout)
27
+ ensure
28
+ @unblocker.push(:ok)
29
+ end
30
+
31
+ def push(message)
32
+ @logger.debug "[#{self.class}] Consumed message #{message.headers}"
33
+ @pool.post(message, &@block) unless @stopped
34
+ end
35
+ alias << push
36
+
37
+ def stop(timeout = 5)
38
+ @stopped = true
39
+ @stop_queue_timeout = timeout
40
+
41
+ @pool.shutdown rescue nil
42
+ @unblocker.pop
43
+ end
44
+
45
+ end
46
+ end
47
+ end
48
+ end
49
+
@@ -3,6 +3,7 @@ require 'bbk/app/thread_pool'
3
3
  require 'bbk/app/dispatcher/message_stream'
4
4
  require 'bbk/app/dispatcher/message'
5
5
  require 'bbk/app/dispatcher/queue_stream_strategy'
6
+ require 'bbk/app/dispatcher/direct_stream_strategy'
6
7
  require 'bbk/app/dispatcher/result'
7
8
  require 'bbk/app/dispatcher/route'
8
9
  require 'bbk/utils/proxy_logger'
@@ -89,7 +90,7 @@ module BBK
89
90
  # 3. дождаться обработки всего в очереди или таймаут
90
91
  # 4. остановить потоки
91
92
  # 5. остановить паблишеры
92
- def close(_timeout = 5)
93
+ def close(timeout = 5)
93
94
  ActiveSupport::Notifications.instrument 'dispatcher.close', dispatcher: self
94
95
  consumers.each do |cons|
95
96
  begin
@@ -100,7 +101,7 @@ module BBK
100
101
  end
101
102
  end
102
103
 
103
- @stream_strategy&.stop(5)
104
+ @stream_strategy&.stop(timeout)
104
105
 
105
106
  consumers.each do |cons|
106
107
  begin
@@ -1,7 +1,7 @@
1
1
  module BBK
2
2
  module App
3
3
 
4
- VERSION = '1.1.3'
4
+ VERSION = '1.1.4'.freeze
5
5
 
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbk-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3.334031
4
+ version: 1.1.4.345154
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samoilenko Yuri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-29 00:00:00.000000000 Z
11
+ date: 2025-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -70,14 +70,14 @@ dependencies:
70
70
  name: activerecord
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '6.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '6.0'
83
83
  - !ruby/object:Gem::Dependency
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.7'
117
+ version: 2.1.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.7'
124
+ version: 2.1.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: faker
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '1.4'
173
+ version: 2.0.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '1.4'
180
+ version: 2.0.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: byebug
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -276,6 +276,7 @@ files:
276
276
  - bin/setup
277
277
  - lib/bbk/app.rb
278
278
  - lib/bbk/app/dispatcher.rb
279
+ - lib/bbk/app/dispatcher/direct_stream_strategy.rb
279
280
  - lib/bbk/app/dispatcher/message.rb
280
281
  - lib/bbk/app/dispatcher/message_stream.rb
281
282
  - lib/bbk/app/dispatcher/queue_stream_strategy.rb