nats_messaging 1.4.0 → 1.5.0
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/lib/nats_messaging/nats_service.rb +20 -8
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: adcdad1e205d9220e1cd8619ea96c75f1b10e6a022eb3fc69cd690fa40dac0d9
|
|
4
|
+
data.tar.gz: b78794d6d8412cf3ecc5a875f59c51f452fed0f575463d749ae33990bc4ad505
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 98eda0194ecdac08dbf00c3becfaa4b74c67dbce5ee7e8cf723d04d0e693e8abe8299cec2a6bca8257bb801089c253f0581fd43de9eb4080793e5006230407de
|
|
7
|
+
data.tar.gz: d52a4e95452387d1c4e65e378c52dd677d2e914b01f1cb896f7184450446f3771939003ade627a2def47ff0d4eef960748afe0f758741e04167072bd18ea3eb5
|
|
@@ -57,20 +57,30 @@ module NatsMessaging
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
+
def make_data_indifferent(data)
|
|
61
|
+
if data.is_a?(Hash)
|
|
62
|
+
data.with_indifferent_access
|
|
63
|
+
else
|
|
64
|
+
data
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
60
68
|
# Subscribe to a subject using MessagePack
|
|
61
69
|
def subscribe_to_subject(subject, durable_name = "durable_name")
|
|
62
70
|
Rails.logger.info "NATS: Subscribing to #{subject}"
|
|
63
71
|
if @js
|
|
64
72
|
@subscriptions[subject] = @js.subscribe(subject, durable: durable_name) do |msg|
|
|
65
73
|
unpacked_data = process_received_message(msg, subject)
|
|
66
|
-
|
|
67
|
-
|
|
74
|
+
indifferent_unpacked_data = make_data_indifferent(unpacked_data)
|
|
75
|
+
yield(msg.subject, indifferent_unpacked_data) if block_given?
|
|
76
|
+
indifferent_unpacked_data
|
|
68
77
|
end
|
|
69
78
|
else
|
|
70
79
|
@subscriptions[subject] = @nats.subscribe(subject) do |msg|
|
|
71
80
|
unpacked_data = process_received_message(msg, subject)
|
|
72
|
-
|
|
73
|
-
|
|
81
|
+
indifferent_unpacked_data = make_data_indifferent(unpacked_data)
|
|
82
|
+
yield(msg.subject, indifferent_unpacked_data) if block_given?
|
|
83
|
+
indifferent_unpacked_data
|
|
74
84
|
end
|
|
75
85
|
end
|
|
76
86
|
end
|
|
@@ -96,8 +106,9 @@ module NatsMessaging
|
|
|
96
106
|
response = @nats.request(subject, packed_message, timeout: timeout) # Timeout of 5 seconds or custom
|
|
97
107
|
unpacked_response = MessagePack.unpack(response.data) # Deserializar respuesta
|
|
98
108
|
log_duration(start_time, "Received reply: %s", unpacked_response.inspect)
|
|
99
|
-
|
|
100
|
-
|
|
109
|
+
indifferent_unpacked_data = make_data_indifferent(unpacked_response)
|
|
110
|
+
yield(subject, indifferent_unpacked_data) if block_given?
|
|
111
|
+
indifferent_unpacked_data
|
|
101
112
|
rescue NATS::IO::Timeout
|
|
102
113
|
log_duration(start_time, "Request timed out for subject: %s", subject)
|
|
103
114
|
nil
|
|
@@ -122,7 +133,8 @@ module NatsMessaging
|
|
|
122
133
|
start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
123
134
|
unpacked_data = MessagePack.unpack(msg.data) # Deserializar mensaje recibido
|
|
124
135
|
Rails.logger.info "NATS: Received request on #{subject}: #{unpacked_data}"
|
|
125
|
-
|
|
136
|
+
indifferent_unpacked_data = make_data_indifferent(unpacked_data)
|
|
137
|
+
yield_return = yield(subject, indifferent_unpacked_data) if block_given?
|
|
126
138
|
reply = reply_message.nil? ? yield_return : reply_message
|
|
127
139
|
packed_reply = reply.to_msgpack # Serializar respuesta
|
|
128
140
|
# Asegurar que msg.reply existe antes de responder
|
|
@@ -132,7 +144,7 @@ module NatsMessaging
|
|
|
132
144
|
else
|
|
133
145
|
log_duration(start_time, "No reply subject for %s, cannot respond", subject)
|
|
134
146
|
end
|
|
135
|
-
|
|
147
|
+
indifferent_unpacked_data
|
|
136
148
|
rescue => e
|
|
137
149
|
log_duration(start_time, "Error while processing message on %s: %s", subject, e.message)
|
|
138
150
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nats_messaging
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Bea Graboloza
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: nats-pure
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '2.
|
|
19
|
+
version: '2.5'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '2.
|
|
26
|
+
version: '2.5'
|
|
27
27
|
description: A service to send and receive messages on a Rails application using NATS
|
|
28
28
|
email: beatriz.graboloza@bpo-advisors.net
|
|
29
29
|
executables: []
|