barrister-amqp 0.0.2 → 0.1.0

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: 5d666f62d0f15f879db33946493805770f7ebdfe
4
- data.tar.gz: 08092e239d1262a62d7acfde0469794733b362b3
3
+ metadata.gz: 628b33f9e9e6a66e08f37a477d7e60cba8b50990
4
+ data.tar.gz: 9a00a4c5576883dec670fed6f304928e64a58534
5
5
  SHA512:
6
- metadata.gz: b1a1b715eebd09298c9cc83be12a21761eb4005d266a02f4d739c5256d2d9e31b02169de9007fd9acf2c88db2ab2191af0ce37af224405d58388076e04402923
7
- data.tar.gz: 5af09b06d43e9564c4fac114759f341a19a79b9e43a91bf0d772ae0538ea51a4475b99479100de5bf983739b03f58c4d22e33985670d8d5ca7436315a3343d0f
6
+ metadata.gz: e4683dac1f0a9845a9f899cd398573de3d541f5fc3505534974909f0a9f1ed576aa2c2d9e5b47396a3868bfb0c91439360e590cf887a184a93a7bb2a8d10924a
7
+ data.tar.gz: 92e017cc65c0a3683b885ffbc6fc900cda9e97c12dc843360d4076a8497ef4d22337cafe8ae07f629e070d6e518e9f9661ecfcf533fde6de920f8279872308e9
data/README.md CHANGED
@@ -43,7 +43,31 @@ ENV['AMQP_URL']="amqp://user:password@hostname/vhost"
43
43
  amqp_transport = Barrister::Amqp::Transport.new('com.company.services.my_barrister_service')
44
44
  client = Barrister::Client.new(amqp_transport)
45
45
 
46
- client.ServiceA.my_awesome_rpc_method
46
+ begin
47
+ client.ServiceA.my_awesome_rpc_method
48
+ rescue Barrister::RpcException => e
49
+ case e.code
50
+ when -32603
51
+ puts "we just timed out"
52
+ when -32000
53
+ puts "Something went wrong on the server"
54
+ end
55
+ end
56
+ ```
57
+
58
+ Optionally, you can set a timeout:
59
+ ```rb
60
+ amqp_transport = Barrister::Amqp::Transport.new('com.company.services.my_barrister_service', timeout: 10)
61
+ begin
62
+ client = Barrister::Client.new(amqp_transport)
63
+ rescue Barrister::RpcException => e
64
+ case e.code
65
+ when -32603
66
+ puts "Response took too longer than 10 seconds"
67
+ when -32000
68
+ puts "Something went wrong on the server"
69
+ end
70
+ end
47
71
  ```
48
72
 
49
73
  ## TODO
@@ -1,5 +1,8 @@
1
1
  require "barrister/amqp/version"
2
2
  require 'bunny'
3
+ require 'barrister'
4
+ require 'ostruct'
5
+ require 'timeout'
3
6
 
4
7
  module Barrister
5
8
  module Amqp
@@ -29,6 +32,7 @@ module Barrister
29
32
  @reply_q = @ch.queue('', exclusive: true)
30
33
  @x = @ch.default_exchange
31
34
  @response_table = Hash.new { |h,k| h[k] = Queue.new }
35
+ @timeout = options[:timeout] || 1 # Timeout is in seconds
32
36
 
33
37
  @reply_q.subscribe(block: false) do |delivery_info, properties, payload|
34
38
  @response_table[properties[:correlation_id]].push payload # push anything that comes in the response_q
@@ -41,16 +45,19 @@ module Barrister
41
45
  print "[AMQP TRANSPORT --->] \n #{enveloppe} \n" if Config.debug
42
46
  @x.publish(enveloppe['message'], { correlation_id: enveloppe['id'], reply_to: @reply_q.name, routing_key: @service_q.name})
43
47
 
44
- response = @response_table[enveloppe['id']].pop
45
- @response_table.delete enveloppe['id']
46
-
47
- begin
48
- JSON.parse(response).tap do |resp|
49
- print "[AMQP TRANSPORT <---] \n #{resp} \n" if Config.debug
48
+ response = Timeout::timeout(@timeout) do
49
+ @response_table[enveloppe['id']].pop.tap do
50
+ @response_table.delete enveloppe['id']
50
51
  end
51
- rescue JSON::ParserError => e
52
- raise RpcException.new(-32000, "Bad response #{e.message}")
53
52
  end
53
+
54
+ JSON.parse(response).tap do |resp|
55
+ print "[AMQP TRANSPORT <---] \n #{resp} \n" if Config.debug
56
+ end
57
+ rescue Timeout::Error
58
+ raise RpcException.new(-32603, "Request timed out")
59
+ rescue JSON::ParserError => e
60
+ raise RpcException.new(-32000, "Bad response #{e.message}")
54
61
  end
55
62
  end
56
63
 
@@ -1,5 +1,5 @@
1
1
  module Barrister
2
2
  module Amqp
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barrister-amqp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - gregory
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-10 00:00:00.000000000 Z
11
+ date: 2016-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.2.2
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
26
  version: 2.2.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: barrister
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.7'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.7'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '10.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">"
73
+ - - '>'
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">"
80
+ - - '>'
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: AMQP transport and server-container for Barrister
@@ -87,7 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - ".gitignore"
90
+ - .gitignore
91
91
  - Gemfile
92
92
  - LICENSE.txt
93
93
  - README.md
@@ -105,18 +105,19 @@ require_paths:
105
105
  - lib
106
106
  required_ruby_version: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - ">="
113
+ - - '>='
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  requirements: []
117
117
  rubyforge_project:
118
- rubygems_version: 2.2.2
118
+ rubygems_version: 2.0.14
119
119
  signing_key:
120
120
  specification_version: 4
121
121
  summary: AMQP transport and server-container for Barrister
122
122
  test_files: []
123
+ has_rdoc: