mimi-messaging-sqs_sns 0.2.0 → 0.3.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a8b8bacfe2cc6db227168999349d0aa7b3e917e
|
4
|
+
data.tar.gz: e83e778b72017c79d108c919f0495945ae8be41f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 546272f3b86be0a2218f89051aa090eb0cf5d36addca02abb0f521f5fa4a90ec6dec5d72e5e56a3bb741ac6d54afb6d586d4836050013dad0c1d7781bfcb6633
|
7
|
+
data.tar.gz: cb3d2f9547dd421f21ca9c2f8def098d1c81ba225e68b156ff4f2eeb44b1875f85d2347ff480d399fe0bc2e639db644d2ec72160edc8c9c4db8adfd9f31d8a0d
|
@@ -62,11 +62,20 @@ module Mimi
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def stop
|
65
|
+
stop_all_processors
|
66
|
+
@sqs_client = nil
|
67
|
+
end
|
68
|
+
|
69
|
+
# Stops all message (command, query and event) processors.
|
70
|
+
#
|
71
|
+
# Stops currently registered processors and stops accepting new messages
|
72
|
+
# for processors.
|
73
|
+
#
|
74
|
+
def stop_all_processors
|
65
75
|
@consumers&.each(&:stop)
|
66
76
|
@consumers = nil
|
67
|
-
@
|
68
|
-
@
|
69
|
-
@sqs_client = nil
|
77
|
+
@reply_consumer&.stop
|
78
|
+
@reply_consumer = nil
|
70
79
|
end
|
71
80
|
|
72
81
|
# Sends the command to the given target
|
@@ -100,12 +109,12 @@ module Mimi
|
|
100
109
|
queue_name, method_name = target.split("/")
|
101
110
|
queue_url = find_queue(queue_name)
|
102
111
|
request_id = SecureRandom.hex(8)
|
103
|
-
reply_queue =
|
112
|
+
reply_queue = reply_consumer.register_request_id(request_id)
|
104
113
|
|
105
114
|
message = Mimi::Messaging::Message.new(
|
106
115
|
message,
|
107
116
|
__method: method_name,
|
108
|
-
__reply_queue_url:
|
117
|
+
__reply_queue_url: reply_consumer.reply_queue_url,
|
109
118
|
__request_id: request_id
|
110
119
|
)
|
111
120
|
deliver_message(queue_url, message)
|
@@ -117,7 +126,15 @@ module Mimi
|
|
117
126
|
deserialize(response.body)
|
118
127
|
end
|
119
128
|
|
129
|
+
# Broadcasts the event with the given target
|
130
|
+
#
|
131
|
+
# @param target [String] "<topic>#<event_type>", e.g. "customers#created"
|
132
|
+
# @param message [Mimi::Messaging::Message]
|
133
|
+
# @param opts [Hash] additional options
|
134
|
+
#
|
120
135
|
def event(target, message, _opts = {})
|
136
|
+
topic_name, event_type = target.split("#")
|
137
|
+
|
121
138
|
raise "Not implemented"
|
122
139
|
end
|
123
140
|
|
@@ -166,17 +183,6 @@ module Mimi
|
|
166
183
|
raise "Not implemented"
|
167
184
|
end
|
168
185
|
|
169
|
-
# Stops all message (command, query and event) processors.
|
170
|
-
#
|
171
|
-
# Stops currently registered processors and stops accepting new messages
|
172
|
-
# for processors.
|
173
|
-
#
|
174
|
-
def stop_all_processors
|
175
|
-
@consumers.each(&:stop)
|
176
|
-
@consumers = []
|
177
|
-
@reply_listener = nil
|
178
|
-
end
|
179
|
-
|
180
186
|
# Creates a new queue
|
181
187
|
#
|
182
188
|
# @param queue_name [String] name of the topic to be created
|
@@ -283,12 +289,13 @@ module Mimi
|
|
283
289
|
|
284
290
|
# Returns the configured reply listener for this process
|
285
291
|
#
|
286
|
-
# @return [
|
292
|
+
# @return [ReplyConsumer]
|
287
293
|
#
|
288
|
-
def
|
289
|
-
@
|
294
|
+
def reply_consumer
|
295
|
+
@reply_consumer ||= begin
|
290
296
|
reply_queue_name = options[:mq_reply_queue_prefix] + SecureRandom.hex(8)
|
291
|
-
|
297
|
+
reply_queue_url = create_queue(reply_queue_name)
|
298
|
+
Mimi::Messaging::SQS_SNS::ReplyConsumer.new(self, reply_queue_url)
|
292
299
|
end
|
293
300
|
end
|
294
301
|
|
@@ -4,18 +4,17 @@ module Mimi
|
|
4
4
|
module Messaging
|
5
5
|
module SQS_SNS
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# ReplyConsumer listens on a particular SQS queue for replies
|
8
8
|
# and passes them to registered Queues (see Ruby ::Queue class).
|
9
9
|
#
|
10
|
-
class
|
11
|
-
attr_reader :
|
10
|
+
class ReplyConsumer
|
11
|
+
attr_reader :reply_queue_url
|
12
12
|
|
13
|
-
def initialize(adapter,
|
13
|
+
def initialize(adapter, reply_queue_url)
|
14
14
|
@mutex = Mutex.new
|
15
15
|
@queues = {}
|
16
|
-
@reply_queue_name = reply_queue_name
|
17
16
|
@adapter = adapter
|
18
|
-
@reply_queue_url =
|
17
|
+
@reply_queue_url = reply_queue_url
|
19
18
|
@consumer = Consumer.new(adapter, reply_queue_url) do |message|
|
20
19
|
dispatch_message(message)
|
21
20
|
end
|
@@ -73,7 +72,7 @@ module Mimi
|
|
73
72
|
Mimi::Messaging.log "reply listener failed to process reply: #{e}"
|
74
73
|
# TODO: propagate exception to main thread?
|
75
74
|
end
|
76
|
-
end # class
|
75
|
+
end # class ReplyConsumer
|
77
76
|
end # module SQS_SNS
|
78
77
|
end # module Messaging
|
79
78
|
end # module Mimi
|
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
34
34
|
spec.require_paths = ["lib"]
|
35
35
|
|
36
|
-
spec.add_dependency "mimi-messaging", "~> 1.
|
36
|
+
spec.add_dependency "mimi-messaging", "~> 1.2"
|
37
37
|
spec.add_dependency "aws-sdk-sqs", "~> 1.22"
|
38
38
|
spec.add_dependency "aws-sdk-sns", "~> 1.19"
|
39
39
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mimi-messaging-sqs_sns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mimi-messaging
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.2'
|
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: '1.
|
26
|
+
version: '1.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: aws-sdk-sqs
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,7 @@ files:
|
|
130
130
|
- lib/mimi/messaging/sqs_sns.rb
|
131
131
|
- lib/mimi/messaging/sqs_sns/adapter.rb
|
132
132
|
- lib/mimi/messaging/sqs_sns/consumer.rb
|
133
|
-
- lib/mimi/messaging/sqs_sns/
|
133
|
+
- lib/mimi/messaging/sqs_sns/reply_consumer.rb
|
134
134
|
- lib/mimi/messaging/sqs_sns/version.rb
|
135
135
|
- mimi-messaging-sqs_sns.gemspec
|
136
136
|
homepage: https://github.com/kukushkin/mimi-messaging-sqs_sns
|