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: 3d47fc3876131459a7e72da66b375a26a208f370
4
- data.tar.gz: ceb906309a79390bd9aa4f0a3db08c5db0ab9a86
3
+ metadata.gz: 7a8b8bacfe2cc6db227168999349d0aa7b3e917e
4
+ data.tar.gz: e83e778b72017c79d108c919f0495945ae8be41f
5
5
  SHA512:
6
- metadata.gz: ade51ba691163a98abc1c4b408e5f1ca37d4097c5cc63149de10a984b34def353b0cb192117ceec4a70370aa782c3de4ff20b22cebe458a43a69ed3ad654c2a2
7
- data.tar.gz: 560f8d00382b7ce6a49b6e02d512389e84568c9041fa1e4b5a1f9e036c51897ac39fff8c1f662d4d130088f2b93f29a552d74038c6f0c052e032df532edba95c
6
+ metadata.gz: 546272f3b86be0a2218f89051aa090eb0cf5d36addca02abb0f521f5fa4a90ec6dec5d72e5e56a3bb741ac6d54afb6d586d4836050013dad0c1d7781bfcb6633
7
+ data.tar.gz: cb3d2f9547dd421f21ca9c2f8def098d1c81ba225e68b156ff4f2eeb44b1875f85d2347ff480d399fe0bc2e639db644d2ec72160edc8c9c4db8adfd9f31d8a0d
@@ -12,4 +12,4 @@ end # module Mimi
12
12
 
13
13
  require_relative "sqs_sns/adapter"
14
14
  require_relative "sqs_sns/consumer"
15
- require_relative "sqs_sns/reply_listener"
15
+ require_relative "sqs_sns/reply_consumer"
@@ -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
- @reply_listener&.stop
68
- @reply_listener = nil
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 = reply_listener.register_request_id(request_id)
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: reply_listener.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 [ReplyListener]
292
+ # @return [ReplyConsumer]
287
293
  #
288
- def reply_listener
289
- @reply_listener ||= begin
294
+ def reply_consumer
295
+ @reply_consumer ||= begin
290
296
  reply_queue_name = options[:mq_reply_queue_prefix] + SecureRandom.hex(8)
291
- Mimi::Messaging::SQS_SNS::ReplyListener.new(self, reply_queue_name)
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
- # ReplyListener listens on a particular SQS queue for replies
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 ReplyListener
11
- attr_reader :reply_queue_name, :reply_queue_url
10
+ class ReplyConsumer
11
+ attr_reader :reply_queue_url
12
12
 
13
- def initialize(adapter, reply_queue_name)
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 = adapter.create_queue(reply_queue_name)
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 ReplyListener
75
+ end # class ReplyConsumer
77
76
  end # module SQS_SNS
78
77
  end # module Messaging
79
78
  end # module Mimi
@@ -3,7 +3,7 @@
3
3
  module Mimi
4
4
  module Messaging
5
5
  module SQS_SNS
6
- VERSION = "0.2.0"
6
+ VERSION = "0.3.0"
7
7
  end
8
8
  end
9
9
  end
@@ -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.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.2.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-08 00:00:00.000000000 Z
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.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.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/reply_listener.rb
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