alchemy-flux 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/alchemy-flux.rb +18 -14
- data/spec/service_spec.rb +21 -42
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2119580f289feaefe98aa54fcb6e7fd7e872908
|
4
|
+
data.tar.gz: 6bf7e68053275968c6b387279db904e34f9fe0b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f44e1bd336a0132a25dabe3e50f8eefb9f7eca8a7cc8a061e95357c6a5aa5befd3b447648d0455a9ad074cdad5a6aeda054378da570e343c29b7b58df4280b7
|
7
|
+
data.tar.gz: 848529eb42bc30a46e39e097c0e6493998ebe921b571f066c57bada496f9c7bc3d69adff28cba9caccd7199f7f3c87d2fa07c69b71c5ffa5e39b880dad9d6772
|
data/lib/alchemy-flux.rb
CHANGED
@@ -214,7 +214,6 @@ module AlchemyFlux
|
|
214
214
|
message_replying_to = metadata.message_id
|
215
215
|
this_message_id = AlchemyFlux::Service.generateUUID()
|
216
216
|
delivery_tag = metadata.delivery_tag
|
217
|
-
interaction_id = payload['headers']['x-interaction-id']
|
218
217
|
|
219
218
|
operation = proc {
|
220
219
|
@processing_messages += 1
|
@@ -222,7 +221,6 @@ module AlchemyFlux
|
|
222
221
|
response = @service_fn.call(payload)
|
223
222
|
{
|
224
223
|
'status_code' => response['status_code'] || 200,
|
225
|
-
'headers' => response['headers'] || { 'x-interaction-id' => interaction_id},
|
226
224
|
'body' => response['body'] || ""
|
227
225
|
}
|
228
226
|
rescue AlchemyFlux::NAckError => e
|
@@ -238,7 +236,6 @@ module AlchemyFlux
|
|
238
236
|
'kind' => "Errors",
|
239
237
|
'id' => AlchemyFlux::Service.generateUUID(),
|
240
238
|
'created_at' => Time.now.utc.iso8601,
|
241
|
-
'interaction_id' => interaction_id,
|
242
239
|
'errors' => [{'code' => 'platform.fault', 'message' => 'An unexpected error occurred'}]
|
243
240
|
}
|
244
241
|
}
|
@@ -284,10 +281,10 @@ module AlchemyFlux
|
|
284
281
|
|
285
282
|
# END OF RECIEVING MESSAGES
|
286
283
|
|
287
|
-
public
|
288
|
-
|
289
284
|
# SENDING MESSAGES
|
290
285
|
|
286
|
+
private
|
287
|
+
|
291
288
|
# send a message to an exchange with routing key
|
292
289
|
#
|
293
290
|
# *exchange*:: A AMQP exchange
|
@@ -302,6 +299,17 @@ module AlchemyFlux
|
|
302
299
|
end
|
303
300
|
end
|
304
301
|
|
302
|
+
public
|
303
|
+
|
304
|
+
# send a message to queue do not wait for response
|
305
|
+
#
|
306
|
+
# *routing_key*:: The routing key to use
|
307
|
+
# *message*:: The message to be sent
|
308
|
+
# *options*:: The message options
|
309
|
+
def send_message_to_queue(routing_key, message)
|
310
|
+
send_message( @channel.default_exchange, routing_key, message, {type: 'ignore'} )
|
311
|
+
end
|
312
|
+
|
305
313
|
# send a message to a service
|
306
314
|
#
|
307
315
|
# *service_name*:: the name of the service
|
@@ -320,17 +328,17 @@ module AlchemyFlux
|
|
320
328
|
|
321
329
|
# send a message to a resource
|
322
330
|
#
|
323
|
-
# *
|
331
|
+
# *http_message*:: the message to be sent to the *path* in the message
|
324
332
|
#
|
325
333
|
# This method can optionally take a block which will be executed asynchronously and yielded the response
|
326
|
-
def send_message_to_resource(
|
327
|
-
routing_key = path_to_routing_key(
|
334
|
+
def send_message_to_resource(http_message)
|
335
|
+
routing_key = path_to_routing_key(http_message['path'])
|
328
336
|
if block_given?
|
329
337
|
EventMachine.defer do
|
330
|
-
yield send_message_to_resource(
|
338
|
+
yield send_message_to_resource(http_message)
|
331
339
|
end
|
332
340
|
else
|
333
|
-
send_HTTP_request_message(@resources_exchange, routing_key,
|
341
|
+
send_HTTP_request_message(@resources_exchange, routing_key, http_message)
|
334
342
|
end
|
335
343
|
end
|
336
344
|
|
@@ -373,10 +381,6 @@ module AlchemyFlux
|
|
373
381
|
'body' => message['body'] || ""
|
374
382
|
}
|
375
383
|
|
376
|
-
if !http_message['headers']['x-interaction-id']
|
377
|
-
http_message['headers']['x-interaction-id'] = AlchemyFlux::Service.generateUUID()
|
378
|
-
end
|
379
|
-
|
380
384
|
message_id = AlchemyFlux::Service.generateUUID()
|
381
385
|
|
382
386
|
http_message_options = {
|
data/spec/service_spec.rb
CHANGED
@@ -192,6 +192,27 @@ describe AlchemyFlux::Service do
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
describe "#send_message_to_queue" do
|
196
|
+
it 'should send a message to services' do
|
197
|
+
received = false
|
198
|
+
service_a = AlchemyFlux::Service.new("fluxa.service") do |message|
|
199
|
+
received = true
|
200
|
+
{}
|
201
|
+
end
|
202
|
+
|
203
|
+
service_b = AlchemyFlux::Service.new("fluxb.service")
|
204
|
+
|
205
|
+
service_a.start
|
206
|
+
service_b.start
|
207
|
+
|
208
|
+
response = service_b.send_message_to_queue("fluxa.service", {})
|
209
|
+
sleep(0.1)
|
210
|
+
expect(received).to be true
|
211
|
+
service_a.stop
|
212
|
+
service_b.stop
|
213
|
+
end
|
214
|
+
|
215
|
+
end
|
195
216
|
|
196
217
|
describe "#send_message_to_service" do
|
197
218
|
|
@@ -271,49 +292,7 @@ describe AlchemyFlux::Service do
|
|
271
292
|
service_b.stop
|
272
293
|
end
|
273
294
|
|
274
|
-
it 'should generate transaction id if none is given' do
|
275
|
-
interaction_id = nil
|
276
|
-
service_a = AlchemyFlux::Service.new("fluxa.service") do |message|
|
277
|
-
expect(message['headers']).to have_key 'x-interaction-id'
|
278
|
-
expect(message['headers']['x-interaction-id']).not_to be_nil
|
279
|
-
interaction_id = message['headers']['x-interaction-id']
|
280
|
-
{ 'body' => "here" }
|
281
|
-
end
|
282
|
-
|
283
|
-
service_b = AlchemyFlux::Service.new("fluxb.service")
|
284
|
-
|
285
|
-
service_a.start
|
286
|
-
service_b.start
|
287
|
-
|
288
|
-
response = service_b.send_message_to_service("fluxa.service", {})
|
289
|
-
expect(response['body']).to eq "here"
|
290
|
-
expect(response['headers']).to have_key 'x-interaction-id'
|
291
|
-
expect(response['headers']['x-interaction-id']).not_to be_nil
|
292
|
-
expect(response['headers']['x-interaction-id']).to eq interaction_id
|
293
|
-
service_a.stop
|
294
|
-
service_b.stop
|
295
|
-
end
|
296
|
-
|
297
|
-
it 'should use given transaction id if one is provided' do
|
298
|
-
interaction_id = 'a123'
|
299
|
-
service_a = AlchemyFlux::Service.new("fluxa.service") do |message|
|
300
|
-
expect(message['headers']['x-interaction-id']).to eq interaction_id
|
301
|
-
{ 'body' => "here" }
|
302
|
-
end
|
303
|
-
|
304
|
-
service_b = AlchemyFlux::Service.new("fluxb.service")
|
305
295
|
|
306
|
-
service_a.start
|
307
|
-
service_b.start
|
308
|
-
|
309
|
-
response = service_b.send_message_to_service("fluxa.service", {
|
310
|
-
'headers' => {'x-interaction-id' => interaction_id}
|
311
|
-
})
|
312
|
-
expect(response['body']).to eq "here"
|
313
|
-
expect(response['headers']['x-interaction-id']).to eq interaction_id
|
314
|
-
service_a.stop
|
315
|
-
service_b.stop
|
316
|
-
end
|
317
296
|
|
318
297
|
it 'should add to transactions and processing messages, and remove once complete' do
|
319
298
|
service_a = AlchemyFlux::Service.new("fluxa.service") do |message|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy-flux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Loyalty New Zealand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|