bbk-app 1.1.1.289658 → 1.1.2.294476
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 +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +79 -21
- data/lib/bbk/app/dispatcher.rb +15 -4
- data/lib/bbk/app/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: 48d4c5f17dd7b744178733bf2834f5452bdc6db5d01be68384114e20dff96aa3
|
4
|
+
data.tar.gz: ac052d0e46715d46a2f092dc5bbd8b8c520ba4b14873bce5c863f9fa8188b66e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cd54852700029c10c8e6ca029f371af7f5c3819e63088bb17aa958e6fe48dfc3983d102d3d3bb5ff01595fe189c6c90cf7d592c7072e155a04d2d2ac2cab13b
|
7
|
+
data.tar.gz: ab80b4799e63cb2510faac6998f50368385c22ff8c072833a7a02128f4ff0d923132b5c60f3c26a877d4de1c77584f70b52d15e83a00971134b0cd035bcbb416
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bbk-app (1.1.
|
4
|
+
bbk-app (1.1.2.294476)
|
5
5
|
activesupport (>= 6.0)
|
6
6
|
bbk-utils (> 1.0.1)
|
7
7
|
oj
|
@@ -69,7 +69,7 @@ GEM
|
|
69
69
|
addressable (~> 2.7)
|
70
70
|
mini_portile2 (2.8.8)
|
71
71
|
minitest (5.15.0)
|
72
|
-
oj (3.16.
|
72
|
+
oj (3.16.10)
|
73
73
|
bigdecimal (>= 3.0)
|
74
74
|
ostruct (>= 0.2)
|
75
75
|
ostruct (0.6.1)
|
data/README.md
CHANGED
@@ -2,42 +2,100 @@
|
|
2
2
|
|
3
3
|
Classes for building services based on BBK stack.
|
4
4
|
|
5
|
-
## Installation
|
6
5
|
|
7
|
-
|
6
|
+
## События ActiveSupport::Notifications
|
7
|
+
|
8
|
+
Подписка на события `BBK::Dispatcher`:
|
8
9
|
|
9
10
|
```ruby
|
10
|
-
|
11
|
+
ActiveSupport::Notifications.subscribe "dispatcher.run" do |event|
|
12
|
+
event.name # => "dispatcher.run"
|
13
|
+
event.duration # => 10 (in milliseconds)
|
14
|
+
event.allocations # => 1826
|
15
|
+
event.payload # => {:extra=>information}
|
11
16
|
|
12
|
-
|
13
|
-
# ...
|
14
|
-
spec.add_dependency "bbk-app", "~> 1.0.0"
|
15
|
-
# ...
|
17
|
+
Rails.logger.info "#{event} Received!"
|
16
18
|
end
|
17
19
|
```
|
18
20
|
|
19
|
-
|
21
|
+
### BBK::Dispatcher
|
20
22
|
|
21
|
-
|
22
|
-
# Gemfile
|
23
|
+
#### 'dispatcher.run'
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
Момент запуска блокирующего чтения сообщений из всех `BBK::Consumer`
|
26
|
+
|
27
|
+
| Ключ | Значение |
|
28
|
+
| :------------ | :----------------------- |
|
29
|
+
| `:dispatcher` | Объект `BBK::Dispatcher` |
|
30
|
+
|
31
|
+
|
32
|
+
#### 'dispatcher.close'
|
33
|
+
|
34
|
+
Момент остановки `BBK::Dispatcher`, перед остановкой всех `BBK::Consumer#close`
|
35
|
+
|
36
|
+
| Ключ | Значение |
|
37
|
+
| :------------ | :----------------------- |
|
38
|
+
| `:dispatcher` | Объект `BBK::Dispatcher` |
|
39
|
+
|
40
|
+
#### 'dispatcher.process'
|
41
|
+
|
42
|
+
Исключение при обработки входящего сообщения
|
43
|
+
|
44
|
+
| Ключ | Значение |
|
45
|
+
| :----------- | :------------------------------------ |
|
46
|
+
| `:msg` | Объект `BBK::Message` (его наследник) |
|
47
|
+
| `:exception` | Стандартный массив [`Exception`] |
|
48
|
+
|
49
|
+
|
50
|
+
#### 'dispatcher.exception'
|
51
|
+
|
52
|
+
> **! Устарело !** Вместо него надо использольвать `dispatcher.process`
|
53
|
+
|
54
|
+
Исключение при обработки входящего сообщения
|
55
|
+
|
56
|
+
| Ключ | Значение |
|
57
|
+
| :----------- | :------------------------------------ |
|
58
|
+
| `:msg` | Объект `BBK::Message` (его наследник) |
|
59
|
+
| `:exception` | Объект `Exception` |
|
60
|
+
|
61
|
+
|
62
|
+
#### 'dispatcher.request.process'
|
63
|
+
|
64
|
+
Обработка входящего сообщения
|
65
|
+
|
66
|
+
| Ключ | Значение |
|
67
|
+
| :----------- | :----------------------------------------------------------------------- |
|
68
|
+
| `:msg` | Объект `BBK::Message` (его наследник) |
|
69
|
+
| `:match` | Объект `Hash`, содержащий поля, по которым найден обработчик (Processor) |
|
70
|
+
| `:processor` | Объект `Processor`, выполняющий обработку |
|
71
|
+
| `:unknown` | `Boolean` - сообщение не попало ни под один обработчик (Processor) |
|
72
|
+
| `:exception` | Стандартный массив [`Exception`] |
|
73
|
+
|
74
|
+
|
75
|
+
#### 'dispatcher.request.exception'
|
76
|
+
|
77
|
+
> **! Устарело !** Вместо него надо использольвать `ispatcher.request.process`
|
78
|
+
|
79
|
+
Обработка входящего сообщения
|
80
|
+
|
81
|
+
| Ключ | Значение |
|
82
|
+
| :----------- | :----------------------------------------------------------------------- |
|
83
|
+
| `:msg` | Объект `BBK::Message` (его наследник) |
|
84
|
+
| `:match` | Объект `Hash`, содержащий поля, по которым найден обработчик (Processor) |
|
85
|
+
| `:processor` | Объект `Processor`, выполняющий обработку |
|
86
|
+
| `:exception` | Объект `Exception` |
|
26
87
|
|
27
|
-
### Supported Ruby versions
|
28
88
|
|
29
|
-
|
89
|
+
#### 'dispatcher.request.result_rejected'
|
30
90
|
|
31
|
-
|
91
|
+
Обработка входящего сообщения
|
32
92
|
|
33
|
-
|
34
|
-
|
93
|
+
| Ключ | Значение |
|
94
|
+
| :--------- | :------------------------------------ |
|
95
|
+
| `:msg` | Объект `BBK::Message` (его наследник) |
|
96
|
+
| `:message` | `String` с текстом ошибки |
|
35
97
|
|
36
|
-
## Contributing
|
37
98
|
|
38
|
-
See the file [CONTRIBUTING.md](./CONTRIBUTING.md)
|
39
99
|
|
40
|
-
## License
|
41
100
|
|
42
|
-
See the file [LICENSE](./LICENSE)
|
43
101
|
|
data/lib/bbk/app/dispatcher.rb
CHANGED
@@ -56,6 +56,7 @@ module BBK
|
|
56
56
|
|
57
57
|
def register_publisher(publisher)
|
58
58
|
raise "Publisher support #{DEFAULT_PROTOCOL}" if publisher.protocols.include?(DEFAULT_PROTOCOL)
|
59
|
+
|
59
60
|
publishers << publisher
|
60
61
|
end
|
61
62
|
|
@@ -129,10 +130,17 @@ module BBK
|
|
129
130
|
# process one message and sending existed results messages
|
130
131
|
def process(message)
|
131
132
|
results = execute_message(message)
|
133
|
+
if message.respond_to?(:nacked?) && message.nacked?
|
134
|
+
logger.debug "Ignore sending results: message(#{message.headers[:message_id]}) nacked in processor"
|
135
|
+
return
|
136
|
+
end
|
132
137
|
logger.debug "There are #{results.count} results to send from #{message.headers[:message_id]}..."
|
133
|
-
|
138
|
+
ActiveSupport::Notifications.instrument 'dispatcher.process', msg: message do
|
139
|
+
send_results(message, results).value
|
140
|
+
end
|
134
141
|
rescue StandardError => e
|
135
142
|
logger.error "Failed processing message: #{e.inspect}"
|
143
|
+
# это событие устарело, вместо него надо использовать `dispatcher.process`
|
136
144
|
ActiveSupport::Notifications.instrument 'dispatcher.exception', msg: message, exception: e
|
137
145
|
message.nack(error: e)
|
138
146
|
close if force_quit
|
@@ -145,7 +153,8 @@ module BBK
|
|
145
153
|
results = []
|
146
154
|
begin
|
147
155
|
is_unknown = @observer.instance_variable_get('@default') == processor
|
148
|
-
ActiveSupport::Notifications.instrument 'dispatcher.request.process', msg: message,
|
156
|
+
ActiveSupport::Notifications.instrument 'dispatcher.request.process', msg: message,
|
157
|
+
match: matched, unknown: is_unknown, processor: processor do
|
149
158
|
processor.call(message, results: results)
|
150
159
|
end
|
151
160
|
rescue StandardError => e
|
@@ -158,7 +167,9 @@ module BBK
|
|
158
167
|
end
|
159
168
|
[results].flatten
|
160
169
|
rescue StandardError => e
|
161
|
-
|
170
|
+
# это событие устарело, вместо него надо использовать `dispatcher.request.process`
|
171
|
+
ActiveSupport::Notifications.instrument 'dispatcher.request.exception', msg: message,
|
172
|
+
match: matched, processor: processor, exception: e
|
162
173
|
raise
|
163
174
|
end
|
164
175
|
|
@@ -184,7 +195,7 @@ module BBK
|
|
184
195
|
answers, sended_messages = results.partition { _1.route.domain == ANSWER_DOMAIN }
|
185
196
|
# allowed only one answer message
|
186
197
|
raise InvalidAnswersMessagesCountError.new("Get #{answers.size} on processing message with id=#{message_id}") if answers.size > 1
|
187
|
-
|
198
|
+
|
188
199
|
answer = answers.first
|
189
200
|
Concurrent::Promises.zip_futures(*sended_messages.map do |result|
|
190
201
|
publish_result(result)
|
data/lib/bbk/app/version.rb
CHANGED
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.
|
4
|
+
version: 1.1.2.294476
|
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-
|
11
|
+
date: 2025-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|