mimi-messaging-sqs_sns 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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