alchemy-flux 0.0.2 → 0.0.3

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.
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