mimi-messaging-sqs_sns 0.1.5 → 0.2.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: e5d9e9a945e2c463bdf1ce925106b659e6d3436c
4
- data.tar.gz: 14cf700db890360e1f6f3877622891b0b66186f4
3
+ metadata.gz: 3d47fc3876131459a7e72da66b375a26a208f370
4
+ data.tar.gz: ceb906309a79390bd9aa4f0a3db08c5db0ab9a86
5
5
  SHA512:
6
- metadata.gz: 87f1db91d58779e0924e3bc6939033a8564aede8c7158be1341991d1dbac362cf3750a48b0431e991fe0226ed526f5a15826cb01e6a1ea2ba8e392d7846a5d1e
7
- data.tar.gz: e246820202d395abbd1b58c8a3e5e71e712ed9e35b5715541e2ec661500a457c945a9b97b816baf25dd954d094ff05baea31ede68e7479c1d76738c4377113dd
6
+ metadata.gz: ade51ba691163a98abc1c4b408e5f1ca37d4097c5cc63149de10a984b34def353b0cb192117ceec4a70370aa782c3de4ff20b22cebe458a43a69ed3ad654c2a2
7
+ data.tar.gz: 560f8d00382b7ce6a49b6e02d512389e84568c9041fa1e4b5a1f9e036c51897ac39fff8c1f662d4d130088f2b93f29a552d74038c6f0c052e032df532edba95c
@@ -75,22 +75,22 @@ module Mimi
75
75
  # Mimi::Messaging.command("users/create", name: "John Smith")
76
76
  #
77
77
  # @param target [String] "<queue>/<method>"
78
- # @param message [Hash]
78
+ # @param message [Hash,Mimi::Messaging::Message]
79
79
  # @param opts [Hash] additional adapter-specific options
80
80
  #
81
81
  # @return nil
82
82
  #
83
83
  def command(target, message, _opts = {})
84
84
  queue_name, method_name = target.split("/")
85
- message_payload = serialize(message)
85
+ message = Mimi::Messaging::Message.new(message, __method: method_name)
86
86
  queue_url = find_queue(queue_name)
87
- deliver_message(message_payload, queue_url, __method: method_name)
87
+ deliver_message(queue_url, message)
88
88
  end
89
89
 
90
90
  # Executes the query to the given target and returns response
91
91
  #
92
92
  # @param target [String] "<queue>/<method>"
93
- # @param message [Hash]
93
+ # @param message [Hash,Mimi::Messaging::Message]
94
94
  # @param opts [Hash] additional options, e.g. :timeout
95
95
  #
96
96
  # @return [Hash]
@@ -98,18 +98,17 @@ module Mimi
98
98
  #
99
99
  def query(target, message, opts = {})
100
100
  queue_name, method_name = target.split("/")
101
- message_payload = serialize(message)
102
101
  queue_url = find_queue(queue_name)
103
102
  request_id = SecureRandom.hex(8)
104
103
  reply_queue = reply_listener.register_request_id(request_id)
105
104
 
106
- deliver_message(
107
- message_payload,
108
- queue_url,
105
+ message = Mimi::Messaging::Message.new(
106
+ message,
109
107
  __method: method_name,
110
108
  __reply_queue_url: reply_listener.reply_queue_url,
111
109
  __request_id: request_id
112
110
  )
111
+ deliver_message(queue_url, message)
113
112
  timeout = opts[:timeout] || options[:mq_default_query_timeout]
114
113
  response = nil
115
114
  Timeout::timeout(timeout) do
@@ -140,15 +139,21 @@ module Mimi
140
139
  opts = opts.dup
141
140
  queue_url = find_or_create_queue(queue_name)
142
141
  @consumers << Consumer.new(self, queue_url) do |m|
143
- message = deserialize(m.body)
144
- headers = deserialize_headers(m)
145
- method_name = headers[:__method]
146
- reply_to = headers[:__reply_queue_url]
142
+ message = Mimi::Messaging::Message.new(
143
+ deserialize(m.body),
144
+ deserialize_headers(m)
145
+ )
146
+ method_name = message.headers[:__method]
147
+ reply_to = message.headers[:__reply_queue_url]
147
148
  if reply_to
148
- response = processor.call_query(method_name, message, headers: headers)
149
- deliver_message(serialize(response), reply_to, __request_id: headers[:__request_id])
149
+ response = processor.call_query(method_name, message, {})
150
+ response_message = Mimi::Messaging::Message.new(
151
+ response,
152
+ __request_id: message.headers[:__request_id]
153
+ )
154
+ deliver_message(reply_to, response_message)
150
155
  else
151
- processor.call_command(method_name, message, headers: headers)
156
+ processor.call_command(method_name, message, {})
152
157
  end
153
158
  end
154
159
  end
@@ -204,17 +209,19 @@ module Mimi
204
209
 
205
210
  # Delivers a message to a queue with given URL.
206
211
  #
207
- # @param message [String]
208
212
  # @param queue_url [String]
209
- # @param headers [Hash<Symbol,String>]
213
+ # @param message [Mimi::Messaging::Message]
210
214
  #
211
- def deliver_message(message, queue_url, headers = {})
215
+ def deliver_message(queue_url, message)
212
216
  raise ArgumentError, "Non-empty queue URL is expected" unless queue_url
217
+ unless message.is_a?(Mimi::Messaging::Message)
218
+ raise ArgumentError, "Message is expected as argument"
219
+ end
213
220
  Mimi::Messaging.log "Delivering message to: #{queue_url}"
214
221
  sqs_client.send_message(
215
222
  queue_url: queue_url,
216
- message_body: message,
217
- message_attributes: headers.map do |k, v|
223
+ message_body: serialize(message),
224
+ message_attributes: message.headers.map do |k, v|
218
225
  [k.to_s, { data_type: "String", string_value: v.to_s }]
219
226
  end.to_h
220
227
  )
@@ -3,7 +3,7 @@
3
3
  module Mimi
4
4
  module Messaging
5
5
  module SQS_SNS
6
- VERSION = "0.1.5"
6
+ VERSION = "0.2.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.0"
36
+ spec.add_dependency "mimi-messaging", "~> 1.1"
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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mimi-messaging-sqs_sns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Kukushkin
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '1.1'
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.0'
26
+ version: '1.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: aws-sdk-sqs
29
29
  requirement: !ruby/object:Gem::Requirement