ragnar 0.2.2 → 0.2.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 (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: