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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/alchemy-flux.rb +18 -14
  3. data/spec/service_spec.rb +21 -42
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a1f5663035d6eeb1184e6c736d58e69f21bc27d
4
- data.tar.gz: 74406464c62fcb305b4e249be9aebb3602dbf46a
3
+ metadata.gz: a2119580f289feaefe98aa54fcb6e7fd7e872908
4
+ data.tar.gz: 6bf7e68053275968c6b387279db904e34f9fe0b3
5
5
  SHA512:
6
- metadata.gz: a00d810e108ef345f9585b10334cd6a8103beefe8c0d8673e9ec8ebb4201b41e8ada43d077b0e40871089b4c40c8fa3fd7e5580b4966a68ed567cf68bd81ca78
7
- data.tar.gz: 620a1d74d5a34a1efa0ca670889e2f9c670598195b06f1c501056ad818dcdf869ca499977fb6849541cf9a153319649733d7abb820a3df6d33850a1602c80d89
6
+ metadata.gz: 4f44e1bd336a0132a25dabe3e50f8eefb9f7eca8a7cc8a061e95357c6a5aa5befd3b447648d0455a9ad074cdad5a6aeda054378da570e343c29b7b58df4280b7
7
+ data.tar.gz: 848529eb42bc30a46e39e097c0e6493998ebe921b571f066c57bada496f9c7bc3d69adff28cba9caccd7199f7f3c87d2fa07c69b71c5ffa5e39b880dad9d6772
@@ -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
- # *message*:: the message to be sent to the *path* in the message
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(message)
327
- routing_key = path_to_routing_key(message['path'])
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(message)
338
+ yield send_message_to_resource(http_message)
331
339
  end
332
340
  else
333
- send_HTTP_request_message(@resources_exchange, routing_key, message)
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 = {
@@ -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.2
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: 2015-12-22 00:00:00.000000000 Z
11
+ date: 2016-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec