mimi-messaging-sqs_sns 0.1.5 → 0.2.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: 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