daemon_objects 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,10 +20,9 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "daemons", "~> 1.1"
22
22
  spec.add_dependency "activesupport", "~> 3.2"
23
- spec.add_dependency "amqp", "~> 0.9"
23
+ spec.add_dependency "bunny", "~> 1.1.0"
24
24
  spec.add_dependency "rake"
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.3"
27
26
  spec.add_development_dependency "rspec"
28
27
  spec.add_development_dependency "pry-nav"
29
28
  end
@@ -1,8 +1,8 @@
1
1
  require "daemon_objects/version"
2
2
  require 'active_support/core_ext/string'
3
3
  require 'daemons'
4
- require 'amqp'
5
4
  require 'logger'
5
+ require 'bunny'
6
6
 
7
7
  module DaemonObjects; end
8
8
 
@@ -8,29 +8,29 @@ module DaemonObjects::AmqpSupport
8
8
  def run
9
9
  logger.info "Preparing to start the AMQP watcher."
10
10
 
11
- AMQP.start(endpoint) do |connection, open_ok|
12
- logger.info "Starting up the AMQP watcher."
11
+ connection = Bunny.new("#{endpoint.gsub("/", "%2F")}")
12
+ connection.start
13
13
 
14
- channel = AMQP::Channel.new(connection)
15
- channel.prefetch(1) if prefetch
14
+ logger.info "Starting up the AMQP watcher."
16
15
 
17
- worker = worker_class.new(
18
- channel,
19
- get_consumer,
20
- {
21
- :queue_name => queue,
22
- :logger => logger,
23
- :arguments => arguments
24
- })
16
+ channel = connection.create_channel
17
+ channel.prefetch(1) if prefetch
25
18
 
26
- worker.start
19
+ worker = worker_class.new(
20
+ channel,
21
+ get_consumer,
22
+ {
23
+ :queue_name => queue,
24
+ :logger => logger,
25
+ :arguments => arguments
26
+ })
27
+ worker.start
27
28
 
28
- logger.info "AMQP worker started"
29
+ logger.info "AMQP worker started"
29
30
 
30
- Signal.trap("INT") do
31
- logger.info "Received signal 'INT'. Exiting process"
32
- connection.close { EventMachine.stop }
33
- end
31
+ Signal.trap("INT") do
32
+ logger.info "Received signal 'INT'. Exiting process"
33
+ connection.close { EventMachine.stop }
34
34
  end
35
35
  end
36
36
  end
@@ -27,17 +27,17 @@ class DaemonObjects::Amqp::Worker
27
27
  end
28
28
 
29
29
  def start
30
- queue = channel.queue(queue_name, :durable => true, :ack => true, :arguments => arguments)
30
+ queue = channel.queue(queue_name, :durable => true, :arguments => arguments)
31
31
  queue.bind(exchange, :routing_key => routing_key) if exchange
32
32
 
33
- queue.subscribe(:ack => true) do |metadata, payload|
34
- exception = handle_message(metadata, payload)
33
+ queue.subscribe(:block => true, :ack => true) do |delivery_info, properties, payload|
34
+ exception = handle_message(channel, delivery_info.delivery_tag, payload)
35
35
 
36
36
  response_payload = consumer.get_response(payload, exception) if consumer.respond_to?(:get_response)
37
37
  if response_payload
38
38
  channel.default_exchange.publish(response_payload.to_json,
39
- :routing_key => metadata.reply_to,
40
- :correlation_id => metadata.message_id)
39
+ :routing_key => delivery_info.routing_key,
40
+ :correlation_id => properties.message_id)
41
41
  end
42
42
  end
43
43
  end
@@ -46,12 +46,12 @@ class DaemonObjects::Amqp::Worker
46
46
  raise StandardError, "ERROR channel-level exception: code = #{channel_close.reply_code}, message = #{channel_close.reply_text}"
47
47
  end
48
48
 
49
- def handle_message(metadata, payload)
49
+ def handle_message(channel, delivery_tag, payload)
50
50
  response = consumer.handle_message (payload)
51
- metadata.ack
51
+ channel.acknowledge(delivery_tag, false)
52
52
  response
53
53
  rescue Exception => e
54
- metadata.reject
54
+ channel.reject(delivery_tag)
55
55
  logger.error "Error occurred handling message, the payload was: #{payload}, the error was: '#{e}'."
56
56
  e
57
57
  end
@@ -1,3 +1,3 @@
1
1
  module DaemonObjects
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -72,9 +72,9 @@ describe DaemonObjects::Base do
72
72
  let(:endpoint){ }
73
73
 
74
74
  before :each do
75
- MyWorker = Class.new do
75
+ MyWorker = Class.new(DaemonObjects::Amqp::Worker) do
76
76
  def initialize(*args); end
77
- def run; end
77
+ def start; end
78
78
  end
79
79
  end
80
80
 
@@ -90,7 +90,8 @@ describe DaemonObjects::Base do
90
90
  :worker_class => MyWorker
91
91
  end
92
92
 
93
- AMQP.should_receive(:start).with('amqp://localhost:4567').and_return(true)
93
+ bunny = double(Bunny).as_null_object
94
+ Bunny.should_receive(:new).with('amqp:%2F%2Flocalhost:4567').and_return(bunny)
94
95
  MyDaemon.run
95
96
  end
96
97
 
@@ -98,7 +99,7 @@ describe DaemonObjects::Base do
98
99
  MyConsumer = Class.new(DaemonObjects::ConsumerBase)
99
100
  MyDaemon = Class.new(DaemonObjects::Base)
100
101
 
101
- AMQP.should_not_receive(:start)
102
+ Bunny.should_not_receive(:new)
102
103
  MyDaemon.run
103
104
 
104
105
  end
@@ -111,12 +112,10 @@ describe DaemonObjects::Base do
111
112
  :worker_class => MyWorker
112
113
  end
113
114
 
114
- def AMQP.start(endpoint)
115
- yield "connection", "open"
116
- end
117
-
118
- channel = double(AMQP::Channel)
119
- AMQP::Channel.stub(:new).and_return(channel)
115
+ bunny = double(Bunny).as_null_object
116
+ Bunny.stub(:new).and_return(bunny)
117
+ channel = double(Bunny::Channel)
118
+ bunny.stub(:create_channel).and_return(channel)
120
119
  channel.should_not_receive(:prefetch)
121
120
 
122
121
  worker = MyWorker.new
@@ -144,14 +143,12 @@ describe DaemonObjects::Base do
144
143
  :worker_class => MyWorker
145
144
  end
146
145
 
147
- def AMQP.start(endpoint)
148
- yield "connection", "open"
149
- end
150
-
151
- channel = double(AMQP::Channel)
146
+ bunny = double(Bunny).as_null_object
147
+ Bunny.stub(:new).and_return(bunny)
148
+ channel = double(Bunny::Channel)
152
149
  channel.should_receive(:prefetch).with(1)
153
150
 
154
- AMQP::Channel.stub(:new).and_return(channel)
151
+ bunny.stub(:create_channel).and_return(channel)
155
152
 
156
153
  worker = MyWorker.new
157
154
  consumer = MyDaemon.get_consumer
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemon_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-11 00:00:00.000000000 Z
12
+ date: 2014-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: daemons
@@ -44,13 +44,13 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: '3.2'
46
46
  - !ruby/object:Gem::Dependency
47
- name: amqp
47
+ name: bunny
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0.9'
53
+ version: 1.1.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0.9'
61
+ version: 1.1.0
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: rake
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -75,22 +75,6 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: bundler
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: '1.3'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: '1.3'
94
78
  - !ruby/object:Gem::Dependency
95
79
  name: rspec
96
80
  requirement: !ruby/object:Gem::Requirement