ruby_rabbitmq_janus 1.2.8 → 1.2.9

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: f476513f5e5d4c4e80d79a6744d57742d50c523e
4
- data.tar.gz: 929e04e9429877f21cdedaa4ad7b5461e8ddf54a
3
+ metadata.gz: 9e7097b3084bdf28a6ca3d98594bf42b6ec88a11
4
+ data.tar.gz: 12039167df87de0454f6b47f81764392e0b5cb92
5
5
  SHA512:
6
- metadata.gz: 77f0c437d77862d84f9492e27ab27f497fe674fd1ce419d670a21944cf920b21af3a49f3cdcec22f500b8d47b6ce045e5bc4c02c7e8fdefdd1fa2ad8590fd5c7
7
- data.tar.gz: 90bf97502d8770c33bc5383969eb53e7968469f11d4509b6e2a17b20beb509dc4ddec6d240ff17d98a98773ebcbb6fcf859801ecf2ca75ee6d62aa530ac12b62
6
+ metadata.gz: 515d7007165d7a1e53485b27bb75265aa5522ebf876655c07945c789efef28cd3ec99071543d8c7062df8c62fe4611d2aa30107ccbd66bf84e74f0b5e7c341da
7
+ data.tar.gz: 58611d01139e576079557531897b65c24b80e275cce625e519358c263c91432d09cfbd45d6acac4542cd8e862ba96fe6c6c42356e4a25192d60a483e67e92efb
data/lib/rrj/info.rb CHANGED
@@ -5,7 +5,7 @@
5
5
  # Define constant to gem.
6
6
  module RubyRabbitmqJanus
7
7
  # Define version to gem
8
- VERSION = '1.2.8'
8
+ VERSION = '1.2.9'
9
9
 
10
10
  # Name to gem
11
11
  GEM_NAME = 'ruby_rabbitmq_janus'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'semaphore'
2
3
 
3
4
  module RubyRabbitmqJanus
4
5
  module Rabbit
@@ -15,13 +16,13 @@ module RubyRabbitmqJanus
15
16
  #
16
17
  # @abstract Publish message in RabbitMQ
17
18
  class BasePublisher
18
- attr_reader :response
19
+ attr_reader :responses
19
20
 
20
21
  # Define a base publisher
21
22
  def initialize
22
23
  Tools::Log.instance.debug 'Create an publisher'
23
- @response = nil
24
- @condition = ConditionVariable.new
24
+ @responses = []
25
+ @semaphore= Semaphore.new
25
26
  @lock = Mutex.new
26
27
  end
27
28
 
@@ -31,11 +32,14 @@ module RubyRabbitmqJanus
31
32
 
32
33
  # return an response when signal is trigger
33
34
  def return_response
35
+ Tools::Log.instance.debug 'Waiting response...'
36
+ @semaphore.wait
37
+ Tools::Log.instance.debug 'Response received'
38
+ response = nil
34
39
  @lock.synchronize do
35
- Tools::Log.instance.debug 'Response received'
36
- @condition.wait(@lock)
37
- @response
40
+ response = @responses.shift
38
41
  end
42
+ response
39
43
  end
40
44
  end
41
45
  end
@@ -13,18 +13,21 @@ module RubyRabbitmqJanus
13
13
  # @param [String] rabbit Information connection to rabbitmq server
14
14
  def initialize(rabbit)
15
15
  super()
16
+ @responses = []
16
17
  @rabbit = rabbit.channel
17
- @response = nil
18
18
  subscribe_queue
19
19
  end
20
20
 
21
21
  # Listen a queue and return a body response
22
22
  def listen_events
23
+ Tools::Log.instance.debug 'Waiting event...'
24
+ @semaphore.wait
25
+ Tools::Log.instance.info 'Janus event received .. treatment ..'
26
+ response = nil
23
27
  lock.synchronize do
24
- condition.wait(lock)
25
- Tools::Log.instance.info 'Janus event received .. treatment ..'
26
- yield @response.event, @response
28
+ response = @responses.shift
27
29
  end
30
+ yield response.event, response
28
31
  end
29
32
 
30
33
  private
@@ -56,15 +59,16 @@ module RubyRabbitmqJanus
56
59
  # Counts transmitted messages
57
60
  def log_message_id(propertie)
58
61
  message_id = propertie.message_id
59
- Tools::Log.instance.info "[X] Message reading with ID ##{message_id}"
62
+ Tools::Log.instance.info "[X] Message reading with ID #{message_id}"
60
63
  end
61
64
 
62
65
  # Sending an signal when an response is reading in queue
63
66
  def synchronize_response(info, payload)
64
- sleep 0.2
65
- @response = Janus::Responses::Event.new(JSON.parse(payload))
67
+ lock.synchronize do
68
+ @responses.push(Janus::Responses::Event.new(JSON.parse(payload)))
69
+ end
66
70
  @rabbit.acknowledge(info.delivery_tag, false)
67
- lock.synchronize { condition.signal }
71
+ @semaphore.signal
68
72
  end
69
73
  end
70
74
  end
@@ -39,8 +39,14 @@ module RubyRabbitmqJanus
39
39
  def subscribe_to_queue
40
40
  reply.subscribe do |_delivery_info, propertie, payload|
41
41
  if @message.correlation.eql?(propertie.correlation_id)
42
- @response = JSON.parse payload
43
- lock.synchronize { condition.signal }
42
+ Tools::Log.instance.debug "Parsing response payload......"
43
+ lock.synchronize do
44
+ @responses.push(JSON.parse payload)
45
+ end
46
+ Tools::Log.instance.debug "Response payload is: #{payload}"
47
+ @semaphore.signal
48
+ else
49
+ Tools::Log.instance.error "Response correlation ID mismatch (#{@message.correlation}!=#{propertie.correlation_id})"
44
50
  end
45
51
  end
46
52
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_rabbitmq_janus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - VAILLANT Jeremy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-27 00:00:00.000000000 Z
11
+ date: 2017-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -278,6 +278,20 @@ dependencies:
278
278
  - - "~>"
279
279
  - !ruby/object:Gem::Version
280
280
  version: 0.2.2
281
+ - !ruby/object:Gem::Dependency
282
+ name: semaphore
283
+ requirement: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - "~>"
286
+ - !ruby/object:Gem::Version
287
+ version: 0.0.1
288
+ type: :runtime
289
+ prerelease: false
290
+ version_requirements: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - "~>"
293
+ - !ruby/object:Gem::Version
294
+ version: 0.0.1
281
295
  description: |
282
296
  This gem is used to communicate to a server Janus through RabbitMQ software
283
297
  (Message-oriented middleware). It waiting a messages to Rails API who send to