ragnar 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/ragnar/exchange.rb +19 -12
  2. data/lib/ragnar/version.rb +1 -1
  3. metadata +12 -12
@@ -10,12 +10,7 @@ module Ragnar
10
10
 
11
11
  def publish routing_key, message, opts={}
12
12
  EM.schedule do
13
- Ragnar::Connector.connect unless Ragnar::Connector.connected?
14
-
15
- connection = Ragnar::Connector.connection
16
- channel = AMQP::Channel.new(connection)
17
- exchange = channel.__send__(@type, @name, @options)
18
-
13
+ channel, exchange = setup_connection
19
14
  channel.queue(@name).bind(exchange, opts.merge(:routing_key => routing_key))
20
15
  exchange.publish(message, opts.merge(:routing_key => routing_key))
21
16
  end
@@ -37,14 +32,26 @@ module Ragnar
37
32
  end
38
33
 
39
34
  EM.schedule do
40
- Ragnar::Connector.connect unless Ragnar::Connector.connected?
41
-
42
- connection = Ragnar::Connector.connection
43
- channel = AMQP::Channel.new(connection)
44
- exchange = channel.__send__(@type, @name, @options)
45
-
35
+ channel, exchange = setup_connection
46
36
  channel.queue(queue_name).bind(exchange, :routing_key => routing_key).subscribe(subscribe_opts, &block)
47
37
  end
48
38
  end
39
+
40
+ private
41
+ def setup_connection
42
+ Ragnar::Connector.connect unless Ragnar::Connector.connected?
43
+
44
+ connection = Ragnar::Connector.connection
45
+ channel = AMQP::Channel.new(connection)
46
+ channel.auto_recovery = true
47
+ connection.on_tcp_connection_loss do |session, settings|
48
+ # AMQP::Session#reconnect(force = false, period = 2)
49
+ # doesn't immediately force reconnect and waits 2 seconds before
50
+ # trying to reconnect (infinitely retries)
51
+ session.reconnect
52
+ end
53
+ exchange = channel.__send__(@type, @name, @options)
54
+ return [channel, exchange]
55
+ end
49
56
  end
50
57
  end
@@ -1,3 +1,3 @@
1
1
  module Ragnar
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ragnar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-06 00:00:00.000000000Z
12
+ date: 2012-08-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: amqp
16
- requirement: &2153569340 !ruby/object:Gem::Requirement
16
+ requirement: &2157437280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153569340
24
+ version_requirements: *2157437280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bunny
27
- requirement: &2153568860 !ruby/object:Gem::Requirement
27
+ requirement: &2157436860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2153568860
35
+ version_requirements: *2157436860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &2153566140 !ruby/object:Gem::Requirement
38
+ requirement: &2157436440 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2153566140
46
+ version_requirements: *2157436440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: evented-spec
49
- requirement: &2153564580 !ruby/object:Gem::Requirement
49
+ requirement: &2157435940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.4.1
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2153564580
57
+ version_requirements: *2157435940
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: pry
60
- requirement: &2153563000 !ruby/object:Gem::Requirement
60
+ requirement: &2157435520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2153563000
68
+ version_requirements: *2157435520
69
69
  description: Provide top-level pub/sub methods with RabbitMQ (AMQP) for interacting
70
70
  with a larger service ecosystem
71
71
  email: