boom_nats 0.1.3 → 0.1.5
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/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/lib/boom_nats/application.rb +30 -0
- data/lib/boom_nats/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: edc24ec388439c93feccc06d27ec06d159563d4f384cf7059c733c967bf131da
|
4
|
+
data.tar.gz: b91fff5bff4336236bbd93c6f4af52c0a291fab22baadb97f090e4c204351ce5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b08cc8d393e0fcc86b2915bbab71ce21e54b78ea4823072ae12c1c1f2780c6409499e4ab4774347198f4bc360663ce88484041c3dc6286fbe039d321e9f8d06b
|
7
|
+
data.tar.gz: 216a954d729a1e9e7cd7aab5a68d4d27d7d258b2807d5b3240158ef7743aeb5943ec8bb07dbc3f03bb26d54e455bfc7237285520348e48405292b2654a11ad2a
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -9,6 +9,11 @@ module BoomNats
|
|
9
9
|
def initialize
|
10
10
|
@route_topics = []
|
11
11
|
@subscriptions = []
|
12
|
+
@callbacks = {
|
13
|
+
before: [],
|
14
|
+
after: []
|
15
|
+
}
|
16
|
+
|
12
17
|
@mutex = Mutex.new
|
13
18
|
end
|
14
19
|
|
@@ -32,18 +37,43 @@ module BoomNats
|
|
32
37
|
NATS
|
33
38
|
end
|
34
39
|
|
40
|
+
def on_before(&block)
|
41
|
+
@callbacks[:before] << block
|
42
|
+
end
|
43
|
+
|
44
|
+
def on_after(&block)
|
45
|
+
@callbacks[:after] << block
|
46
|
+
end
|
47
|
+
|
48
|
+
def error_as_json(msg, topic, error)
|
49
|
+
{
|
50
|
+
message: msg,
|
51
|
+
topic: topic,
|
52
|
+
error: "#{error.class}: #{error.message}",
|
53
|
+
backtrace: error.backtrace,
|
54
|
+
status: "error"
|
55
|
+
}.to_json
|
56
|
+
end
|
57
|
+
|
35
58
|
def start
|
36
59
|
Thread.new do
|
60
|
+
@callbacks[:before].each { |callback| callback.call(self) }
|
61
|
+
|
37
62
|
nats_connect do |nats|
|
38
63
|
@route_topics.each do |rt|
|
39
64
|
@subscriptions << nats.subscribe(rt.topic, rt.options) do |msg, reply, _sub|
|
40
65
|
rt.executor.new(msg, reply, nats, rt.serializer, rt.parser)
|
66
|
+
rescue StandardError => e
|
67
|
+
BoomNats.logger.error "BoomNats::error: #{e.message}"
|
68
|
+
nats.publish(reply, error_as_json(msg, rt.topic, e)) unless reply.nil?
|
41
69
|
end
|
42
70
|
end
|
43
71
|
|
44
72
|
BoomNats.logger.debug "BoomNats::started"
|
45
73
|
|
46
74
|
prepare_trap unless defined?(Rails::Railtie)
|
75
|
+
|
76
|
+
@callbacks[:after].each { |callback| callback.call(self) }
|
47
77
|
end
|
48
78
|
end
|
49
79
|
|
data/lib/boom_nats/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boom_nats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Welington Sampaio
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|