daemon_objects 0.1.5 → 0.1.6

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.
@@ -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