euston-rabbitmq 1.1.0 → 1.2.1

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.
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source :rubygems
2
2
  gemspec
3
3
 
4
- gem 'safely', :git => 'https://github.com/leemhenson/safely.git', :branch => 'override_strategies'
4
+ gem 'hot_bunnies', :git => 'https://github.com/ruby-amqp/hot_bunnies.git'
5
+ gem 'safely', :git => 'https://github.com/leemhenson/safely.git', :branch => 'override_strategies'
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'euston-rabbitmq'
3
- s.version = '1.1.0'
3
+ s.version = '1.2.1'
4
4
  s.platform = RUBY_PLATFORM.to_s == 'java' ? 'java' : Gem::Platform::RUBY
5
5
  s.authors = ['Lee Henson', 'Guy Boertje']
6
6
  s.email = ['lee.m.henson@gmail.com', 'guyboertje@gmail.com']
@@ -21,8 +21,8 @@ Gem::Specification.new do |s|
21
21
  lib/euston-rabbitmq/euston/handler_binder.rb
22
22
  lib/euston-rabbitmq/euston/queues.rb
23
23
  lib/euston-rabbitmq/euston/retrying_subscription.rb
24
- lib/euston-rabbitmq/rabbitmq_client/queue.rb
25
- lib/euston-rabbitmq/rabbitmq_client/reactive_message.rb
24
+ lib/euston-rabbitmq/hot_bunnies/queue.rb
25
+ lib/euston-rabbitmq/hot_bunnies/reactive_message.rb
26
26
  lib/euston-rabbitmq/reflection/constant_loader.rb
27
27
  lib/euston-rabbitmq/reflection/handler_finder.rb
28
28
  lib/euston-rabbitmq/reflection/handler_reference.rb
@@ -44,13 +44,13 @@ Gem::Specification.new do |s|
44
44
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
45
45
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
46
46
 
47
- s.add_dependency 'activesupport', '~> 3.0.10'
48
- s.add_dependency 'euston', '~> 1.1.0'
49
- s.add_dependency 'euston-eventstore', '~> 1.1.0'
47
+ s.add_dependency 'activesupport', '>= 3.0.10'
48
+ s.add_dependency 'euston', '~> 1.2.0'
49
+ s.add_dependency 'euston-eventstore', '~> 1.2.0'
50
50
  s.add_dependency 'hash-keys', '~> 1.0.0'
51
51
  s.add_dependency 'hollywood', '~> 1.0.0'
52
- s.add_dependency 'i18n', '~> 0.5.0'
53
- s.add_dependency 'jessica', '~> 1.0.0' if RUBY_PLATFORM.to_s == 'java'
52
+ s.add_dependency 'i18n', '>= 0.5.0'
53
+ s.add_dependency 'hot_bunnies', '~> 1.3.0.pre1' if RUBY_PLATFORM.to_s == 'java'
54
54
  s.add_dependency 'safely', '~> 0.3.0'
55
55
 
56
56
  s.add_development_dependency 'awesome_print', '~> 0.4.0'
@@ -4,7 +4,7 @@ require 'active_support/ordered_hash'
4
4
  require 'hash-keys'
5
5
  require 'hollywood'
6
6
  require 'i18n'
7
- require 'jessica' if RUBY_PLATFORM == 'java'
7
+ require 'hot_bunnies' if RUBY_PLATFORM == 'java'
8
8
  require 'safely'
9
9
 
10
10
  require 'euston'
@@ -14,8 +14,8 @@ require 'euston-rabbitmq/reflection/constant_loader'
14
14
  require 'euston-rabbitmq/reflection/handler_finder'
15
15
  require 'euston-rabbitmq/reflection/handler_reference'
16
16
 
17
- require 'euston-rabbitmq/rabbitmq_client/reactive_message'
18
- require 'euston-rabbitmq/rabbitmq_client/queue'
17
+ require 'euston-rabbitmq/hot_bunnies/reactive_message'
18
+ require 'euston-rabbitmq/hot_bunnies/queue'
19
19
 
20
20
  require 'euston-rabbitmq/euston/errors'
21
21
  require 'euston-rabbitmq/euston/exchanges'
@@ -1,23 +1,33 @@
1
1
  module Euston
2
2
  module RabbitMq
3
3
  class CommandHandlerBinder < HandlerBinder
4
+ include AggregateRootPrivateMethodNames
5
+
4
6
  private
5
7
 
6
- def ensure_bindings_exist_for_reference channel, reference
8
+ def ensure_bindings_exist_for_reference reference
7
9
  queue_name = :command_handlers
8
- queue = get_command_handler_queue channel, queue_name
10
+ queue = get_command_handler_queue @channel, queue_name
11
+
12
+ if reference.handler.included_modules.include? AggregateRoot
13
+ routing_keys = reference.handler.instance_methods.map { |m| self.class.consumes_regex.match m }.compact.map { |m| m[1] }
14
+ else
15
+ routing_keys = ["#{reference.name.to_s.underscore}"]
16
+ end
9
17
 
10
- routing_key = "commands.#{reference.name.to_s.underscore}"
18
+ exchange = get_exchange @channel, :commands
11
19
 
12
- @log.debug "Ensuring routing key exists for queue #{queue_name}: #{routing_key}"
20
+ routing_keys.each do |routing_key|
21
+ routing_key = "commands.#{routing_key}"
13
22
 
14
- exchange = get_exchange channel, :commands
15
- queue.bind exchange, :routing_key => routing_key
23
+ @log.debug "Ensuring routing key exists for queue #{queue_name}: #{routing_key}"
24
+ queue.bind exchange, :routing_key => routing_key
25
+ end
16
26
  end
17
27
 
18
28
  def get_command_handler_queue channel, queue_name
19
29
  @log.debug "Ensuring command handler queue exists: #{queue_name}" if @command_handler_queue.nil?
20
- @command_handler_queue ||= get_queue channel, queue_name
30
+ @command_handler_queue ||= get_queue @channel, queue_name
21
31
  end
22
32
  end
23
33
  end
@@ -3,12 +3,12 @@ module Euston
3
3
  class EventHandlerBinder < HandlerBinder
4
4
  private
5
5
 
6
- def ensure_bindings_exist_for_reference channel, reference
6
+ def ensure_bindings_exist_for_reference reference
7
7
  queue_name = reference.name.to_s.underscore
8
8
 
9
9
  @log.debug "Ensuring event handler queue exists: #{queue_name}"
10
10
 
11
- queue = get_queue channel, queue_name
11
+ queue = get_queue @channel, queue_name
12
12
 
13
13
  prefix = '__event_handler__'
14
14
 
@@ -17,7 +17,7 @@ module Euston
17
17
  methods = methods.map { |method| method.to_s[prefix.length, method.to_s.length - prefix.length] }
18
18
  methods = methods.map { |method| method.split('__').first }
19
19
 
20
- exchange = get_exchange channel, :events
20
+ exchange = get_exchange @channel, :events
21
21
 
22
22
  methods.uniq.each do |method|
23
23
  routing_key = "events.#{method}"
@@ -10,7 +10,7 @@ module Euston
10
10
  end
11
11
 
12
12
  def get_exchange channel, name, opts = {}
13
- channel.topic name.to_s, default_exchange_options.merge(opts)
13
+ channel.exchange name.to_s, default_exchange_options.merge(:type => :topic).merge(opts)
14
14
  end
15
15
  end
16
16
  end
@@ -4,21 +4,15 @@ module Euston
4
4
  include Euston::RabbitMq::Queues
5
5
  include Euston::RabbitMq::Exchanges
6
6
 
7
- def initialize references, logger = Euston::NullLogger.instance
7
+ def initialize channel, references, logger = Euston::NullLogger.instance
8
+ @channel = channel
8
9
  @references = references
9
10
  @log = logger
10
11
  end
11
12
 
12
13
  def ensure_bindings_exist
13
- begin
14
- channel = AMQP::Channel.new
15
- channel.prefetch 1
16
-
17
- @references.each do |reference|
18
- ensure_bindings_exist_for_reference channel, reference
19
- end
20
- ensure
21
- channel.disconnect unless channel.nil?
14
+ @references.each do |reference|
15
+ ensure_bindings_exist_for_reference reference
22
16
  end
23
17
  end
24
18
  end
@@ -12,13 +12,13 @@ module Euston
12
12
  end
13
13
 
14
14
  def subscribe
15
- queue.when(:message_decode_failed => method(:log_decode_failure),
16
- :message_failed => method(:handle_failure),
17
- :message_received => method(:call_handler))
18
-
19
15
  queue.safe_subscribe
20
16
  end
21
17
 
18
+ def get
19
+ queue.safe_get
20
+ end
21
+
22
22
  private
23
23
 
24
24
  def call_handler message
@@ -38,7 +38,7 @@ module Euston
38
38
  :body =>
39
39
  {
40
40
  :message => failed_message,
41
- :routing_key => reactive_message.method.routing_key,
41
+ :routing_key => reactive_message.headers.routing_key,
42
42
  :error => error.message,
43
43
  :backtrace => error.backtrace
44
44
  }
@@ -46,51 +46,56 @@ module Euston
46
46
  end
47
47
 
48
48
  def handle_failure message, error, reactive_message
49
+ return reactive_message.reject if error.is_a? Euston::EventStore::ConcurrencyError
50
+
49
51
  failures = message[:failures] || 0
50
52
  failures = failures + 1
51
53
  message[:failures] = failures
52
54
 
53
55
  begin
54
- if failures == 3
56
+ if failures == 5
55
57
  debug_message = "Message failed, out of retries"
56
58
 
57
59
  message.delete :failures
58
60
  message = create_message_failed_message error, message, reactive_message
59
61
 
60
- options = { :key => 'events.message_failed' }
62
+ options = { :routing_key => 'events.message_failed' }
61
63
  exchange = :events
62
64
  else
63
65
  debug_message = "Message failed, retrying"
64
-
65
- options = { :key => reactive_message.method.routing_key }
66
- exchange = reactive_message.method.routing_key.split('.').first.to_sym
66
+ options = { :routing_key => reactive_message.headers.routing_key }
67
+ exchange = reactive_message.headers.routing_key.split('.').first.to_sym
67
68
  end
68
69
 
69
70
  options = default_publish_options.merge options
70
71
  exchange = get_exchange @channel, exchange
71
72
  message = ActiveSupport::JSON.encode message
72
-
73
- @log.debug "#{debug_message}: #{message}"
74
-
75
73
  exchange.publish message, options
76
74
 
77
75
  reactive_message.ack
78
76
  rescue StandardError => e
79
- reactive_message.reject :requeue => true
77
+ reactive_message.reject
80
78
  raise e
81
79
  end
82
80
  end
83
81
 
84
82
  def log_decode_failure message, error
85
83
  text = "A handler queue subscription failed. [Error] #{error.message} [Payload] #{message}"
86
- error = Euston::RabbitMq::MessageDecodeFailedError.new text
87
- error.set_backtrace error.backtrace
84
+ wrapper = Euston::RabbitMq::MessageDecodeFailedError.new text
85
+ wrapper.set_backtrace error.backtrace
88
86
 
89
- raise error
87
+ raise wrapper
90
88
  end
91
89
 
92
90
  def queue
93
- @queue ||= get_queue @channel, @queue_name
91
+ if @queue.nil?
92
+ @queue = get_queue @channel, @queue_name
93
+ @queue.when(:message_decode_failed => method(:log_decode_failure),
94
+ :message_failed => method(:handle_failure),
95
+ :message_received => method(:call_handler))
96
+ end
97
+
98
+ @queue
94
99
  end
95
100
  end
96
101
  end
@@ -1,19 +1,22 @@
1
- class RabbitMQClient
1
+ module HotBunnies
2
2
  class Queue
3
3
  include Hollywood
4
4
 
5
5
  attr_writer :timeout
6
6
 
7
+ def consumer auto_ack = false
8
+ consumer = QueueingConsumer.new @channel
9
+ @channel.basic_consume @name, auto_ack, consumer
10
+ consumer
11
+ end
12
+
7
13
  def delivery_timeout
8
14
  @timeout ||= 500
9
15
  end
10
16
 
11
- def safe_subscribe
12
- _consumer = self.consumer
13
-
14
- until Thread.current[:stop] do
15
- safe_subscribe_with_timeout(_consumer, self.delivery_timeout)
16
- end
17
+ def safe_get
18
+ message = get :ack => true
19
+ safe_handle_message ReactiveMessage.new(@channel, *message) unless message.nil?
17
20
  end
18
21
 
19
22
  def safe_handle_message reactive_message
@@ -22,29 +25,33 @@ class RabbitMQClient
22
25
 
23
26
  begin
24
27
  callback :message_received, message
25
- reactive_message.ack!
28
+ reactive_message.ack
26
29
  rescue Euston::EventStore::ConcurrencyError
27
- reactive_message.reject! true #requeue
30
+ reactive_message.reject #requeue
28
31
  rescue => e
29
32
  callback :message_failed, message, e, reactive_message
30
- Safely.report! e
31
33
  end
32
34
  rescue => e
33
35
  callback :message_decode_failed, reactive_message.body, e
34
- reactive_message.ack!
36
+ reactive_message.ack
35
37
  Safely.report! e
36
38
  end
39
+
40
+ reactive_message.headers.ack unless reactive_message.reacted?
37
41
  end
38
42
 
39
- def consumer auto_ack = false
40
- consumer = QueueingConsumer.new @channel
41
- @channel.basic_consume @name, auto_ack, consumer
42
- consumer
43
+ def safe_subscribe
44
+ _consumer = self.consumer
45
+
46
+ until Thread.current[:stop] do
47
+ safe_subscribe_with_timeout _consumer, self.delivery_timeout
48
+ end
43
49
  end
44
50
 
45
51
  def safe_subscribe_with_timeout consumer, timeout = 500
46
52
  loop do
47
53
  delivery = nil
54
+
48
55
  begin
49
56
  delivery = consumer.next_delivery timeout
50
57
  rescue NativeException => e
@@ -54,10 +61,11 @@ class RabbitMQClient
54
61
 
55
62
  break if delivery.nil?
56
63
 
57
- reactive_message = ReactiveMessage.new @channel, delivery, String.from_java_bytes(delivery.get_body)
58
- safe_handle_message reactive_message
64
+ headers = Headers.new @channel, nil, delivery.envelope, delivery.properties
65
+ body = String.from_java_bytes(delivery.get_body)
59
66
 
60
- @channel.basic_ack(delivery.envelope.delivery_tag, false) if reactive_message.should_acknowledge?
67
+ reactive_message = ReactiveMessage.new @channel, headers, body
68
+ safe_handle_message reactive_message
61
69
  end
62
70
  end
63
71
 
@@ -0,0 +1,26 @@
1
+ module HotBunnies
2
+ class ReactiveMessage
3
+ attr_reader :headers, :body
4
+
5
+ def initialize channel, headers, body
6
+ @channel = channel
7
+ @headers = headers
8
+ @body = body
9
+ @reacted = false
10
+ end
11
+
12
+ def ack opts = {}
13
+ @headers.ack({ :multiple => false }.merge(opts))
14
+ @reacted = true
15
+ end
16
+
17
+ def reject opts = {}
18
+ @headers.reject({ :requeue => true }.merge(opts))
19
+ @reacted = true
20
+ end
21
+
22
+ def reacted?
23
+ @reacted
24
+ end
25
+ end
26
+ end
@@ -1,10 +1,11 @@
1
1
  module Euston
2
2
  module RabbitMq
3
3
  class HandlerFinder
4
- def initialize required_mixins = []
4
+ def initialize required_mixins = [], logger = Euston::NullLogger.instance
5
5
  @namespaces = []
6
6
  @constant_loader = ConstantLoader.new.when(:hit => method(:store_found_constant), :miss => method(:log_failed_lookup))
7
7
  @required_mixins = required_mixins
8
+ @log = logger
8
9
  end
9
10
 
10
11
  attr_reader :namespaces
@@ -32,7 +33,7 @@ module Euston
32
33
  end
33
34
 
34
35
  def log_failed_lookup string
35
- EUSTON_LOG.warn "Couldn't find handler namespace: #{string}" if Object.const_defined?('EUSTON_LOG')
36
+ @log.warn "Couldn't find handler namespace: #{string}"
36
37
  end
37
38
 
38
39
  def map_namespaces_to_references
@@ -41,7 +42,7 @@ module Euston
41
42
  @namespaces.each do |namespace|
42
43
  references.push *(namespace.constants.map do |constant|
43
44
  reference = HandlerReference.new namespace, namespace.const_get(constant), constant
44
- reference = nil unless @required_mixins.all? { |mixin| reference.handler.included_modules.include? mixin }
45
+ reference = nil unless @required_mixins.empty? || @required_mixins.any? { |mixin| reference.handler.included_modules.include? mixin }
45
46
  reference
46
47
  end.to_a - [nil])
47
48
  end
@@ -1,5 +1,5 @@
1
1
  module Euston
2
2
  module RabbitMq
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.1"
4
4
  end
5
5
  end
@@ -12,8 +12,8 @@ describe 'command handler binder', :rabbitmq do
12
12
 
13
13
  let(:handler) { CommandHandlerBinderTesting::AbcHandler }
14
14
  let(:handler_finder) { Euston::RabbitMq::HandlerFinder.new.tap { |f| f.namespaces.push 'CommandHandlerBinderTesting' } }
15
- let(:binder) { Euston::RabbitMq::CommandHandlerBinder.new handler_finder.find }
16
- let(:bindings) { @rabbitmqadmin.list_bindings AMQP_OPTS[:vhost] }
15
+ let(:binder) { Euston::RabbitMq::CommandHandlerBinder.new @channel, handler_finder.find }
16
+ let(:bindings) { @rabbitmqadmin.list_bindings @amqp_config[:vhost] }
17
17
 
18
18
  before { binder.ensure_bindings_exist }
19
19
 
@@ -22,8 +22,8 @@ describe 'event handler binder', :rabbitmq do
22
22
 
23
23
  let(:handler) { EventHandlerBinderTesting::XyzHandler }
24
24
  let(:handler_finder) { Euston::RabbitMq::HandlerFinder.new.tap { |f| f.namespaces.push 'EventHandlerBinderTesting' } }
25
- let(:binder) { Euston::RabbitMq::EventHandlerBinder.new handler_finder.find }
26
- let(:bindings) { @rabbitmqadmin.list_bindings AMQP_OPTS[:vhost] }
25
+ let(:binder) { Euston::RabbitMq::EventHandlerBinder.new @channel, handler_finder.find }
26
+ let(:bindings) { @rabbitmqadmin.list_bindings @amqp_config[:vhost] }
27
27
 
28
28
  before { binder.ensure_bindings_exist }
29
29
 
@@ -13,15 +13,5 @@ describe 'exchanges', :rabbitmq do
13
13
  subject { get_exchange @channel, :events }
14
14
  its(:name) { should == 'events' }
15
15
  end
16
-
17
- context 'obtaining the same exchange instance' do
18
- let(:name) { "exchange_#{Time.now.to_i}" }
19
- let(:instance_1) { get_exchange @channel, name }
20
- let(:instance_2) { get_exchange @channel, name }
21
-
22
- subject { instance_1 }
23
-
24
- it { should equal instance_2 }
25
- end
26
16
  end
27
17
  end
@@ -11,14 +11,5 @@ describe 'queues', :rabbitmq do
11
11
 
12
12
  its(:name) { should == name }
13
13
  end
14
-
15
- context 'obtaining the same queue instance' do
16
- let(:instance_1) { get_queue(@channel, name) }
17
- let(:instance_2) { get_queue(@channel, name) }
18
-
19
- subject { instance_1 }
20
-
21
- it { should equal instance_2 }
22
- end
23
14
  end
24
15
  end
@@ -15,13 +15,13 @@ describe 'retrying subscription', :rabbitmq do
15
15
  let(:message) { { :x => 123 } }
16
16
  let(:routing_key) { 'events.failing' }
17
17
  let(:error) { 'kablammo' }
18
+ let(:thread_channel) { @amqp_connection.create_channel }
18
19
 
19
20
  before do
20
21
  failing_handler_queue.bind events_exchange, :routing_key => routing_key
21
22
  failed_message_handler_queue.bind events_exchange, :routing_key => 'events.message_failed'
22
23
 
23
- @thread = Thread.new(failing_queue_name, fail_limit, outcomes) do |name, fail_limit, outcomes|
24
- channel = AMQP::Channel.new
24
+ @thread = Thread.new(thread_channel, failing_queue_name, fail_limit, outcomes) do |channel, name, fail_limit, outcomes|
25
25
  subscription = Euston::RabbitMq::RetryingSubscription.new channel, name
26
26
  subscription.when(:message_received => ->(body) { outcomes[:attempts_to_handle] += 1; raise error if outcomes[:attempts_to_handle] <= fail_limit })
27
27
  subscription.subscribe
@@ -31,7 +31,7 @@ describe 'retrying subscription', :rabbitmq do
31
31
  failing_message_handler_queue_harness.when(:message_received => ->(body) { outcomes[:failure] = body })
32
32
  failing_message_handler_queue_harness.startup
33
33
 
34
- events_exchange.publish ActiveSupport::JSON.encode(message), { :key => routing_key }
34
+ events_exchange.publish ActiveSupport::JSON.encode(message), { :routing_key => routing_key }
35
35
 
36
36
  sleep 0.25
37
37
  end
@@ -39,6 +39,7 @@ describe 'retrying subscription', :rabbitmq do
39
39
  after do
40
40
  failing_message_handler_queue_harness.shutdown
41
41
  @thread.kill
42
+ thread_channel.close
42
43
  end
43
44
 
44
45
  subject { outcomes }
@@ -24,7 +24,7 @@ describe 'queue', :rabbitmq do
24
24
  sleep 0.25
25
25
  end
26
26
 
27
- let(:exchange) { @channel.topic "test-#{Time.now.to_i - 1}", :durable => true, :nowait => false }
27
+ let(:exchange) { @channel.exchange "test-#{Time.now.to_i - 1}", :durable => true, :nowait => false, :type => :topic }
28
28
  let(:harness) { QueueSubscriptionThreadHarness.new queue }
29
29
 
30
30
  before do
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'ap'
2
+ require 'logger'
2
3
  require 'rabbitmqadmin-cli'
3
4
  require 'euston-rabbitmq'
4
5
 
@@ -14,21 +15,32 @@ if jruby?
14
15
  require File.expand_path('../support/queue_subscription_thread_harness', __FILE__)
15
16
  require File.expand_path('../support/filters', __FILE__)
16
17
 
17
- AMQP_OPTS = { :host => 'localhost',
18
- :pass => 'password',
19
- :user => 'euston-rabbitmq-test',
20
- :vhost => 'euston-rabbitmq-test' }
18
+ amqp_config = { :host => 'localhost',
19
+ :pass => 'password',
20
+ :user => 'euston-rabbitmq-test',
21
+ :vhost => 'euston-rabbitmq-test' }
21
22
 
22
23
  RSpec.configure do |config|
23
24
  config.treat_symbols_as_metadata_keys_with_true_values = true
24
25
 
25
- config.before(:each, :amqp) do
26
- initialize_amqp
26
+ config.before(:all, :rabbitmq) do
27
+ @amqp_config = amqp_config
27
28
  end
28
29
 
29
30
  config.before(:each, :rabbitmq) do
30
- initialize_rabbitmq
31
- initialize_amqp
31
+ initialize_rabbitmq amqp_config
32
+
33
+ @amqp_connection = HotBunnies.connect(:host => amqp_config[:host],
34
+ :virtual_host => amqp_config[:vhost],
35
+ :username => amqp_config[:user],
36
+ :password => amqp_config[:pass])
37
+
38
+ @channel = @amqp_connection.create_channel
39
+ end
40
+
41
+ config.after(:each, :rabbitmq) do
42
+ @channel.close
43
+ @amqp_connection.close
32
44
  end
33
45
  end
34
46
  end
@@ -1,10 +1,5 @@
1
- def initialize_amqp
2
- AMQP.settings.merge! AMQP_OPTS
3
- @channel = AMQP::Channel.new
4
- end
5
-
6
- def initialize_rabbitmq
1
+ def initialize_rabbitmq amqp_config
7
2
  @rabbitmqadmin = RabbitMqAdminCli.new
8
- @rabbitmqadmin.initialize_vhost AMQP_OPTS[:vhost]
9
- @rabbitmqadmin.initialize_user AMQP_OPTS[:vhost], AMQP_OPTS[:user], AMQP_OPTS[:pass]
3
+ @rabbitmqadmin.initialize_vhost amqp_config[:vhost]
4
+ @rabbitmqadmin.initialize_user amqp_config[:vhost], amqp_config[:user], amqp_config[:pass]
10
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: euston-rabbitmq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,44 +10,44 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-03 00:00:00.000000000 Z
13
+ date: 2011-10-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &84335980 !ruby/object:Gem::Requirement
17
+ requirement: &84701010 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ~>
20
+ - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.0.10
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *84335980
25
+ version_requirements: *84701010
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: euston
28
- requirement: &84335140 !ruby/object:Gem::Requirement
28
+ requirement: &84700770 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.0
33
+ version: 1.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *84335140
36
+ version_requirements: *84700770
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: euston-eventstore
39
- requirement: &84334370 !ruby/object:Gem::Requirement
39
+ requirement: &84700540 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- version: 1.1.0
44
+ version: 1.2.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *84334370
47
+ version_requirements: *84700540
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: hash-keys
50
- requirement: &84333860 !ruby/object:Gem::Requirement
50
+ requirement: &84700310 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.0.0
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *84333860
58
+ version_requirements: *84700310
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: hollywood
61
- requirement: &84332670 !ruby/object:Gem::Requirement
61
+ requirement: &84700080 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,21 +66,21 @@ dependencies:
66
66
  version: 1.0.0
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *84332670
69
+ version_requirements: *84700080
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: i18n
72
- requirement: &84332210 !ruby/object:Gem::Requirement
72
+ requirement: &84699850 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - ~>
75
+ - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: 0.5.0
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *84332210
80
+ version_requirements: *84699850
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: safely
83
- requirement: &84331730 !ruby/object:Gem::Requirement
83
+ requirement: &84699610 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: 0.3.0
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *84331730
91
+ version_requirements: *84699610
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: awesome_print
94
- requirement: &84331020 !ruby/object:Gem::Requirement
94
+ requirement: &84699380 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 0.4.0
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *84331020
102
+ version_requirements: *84699380
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: fuubar
105
- requirement: &84125840 !ruby/object:Gem::Requirement
105
+ requirement: &84699150 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 0.0.0
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *84125840
113
+ version_requirements: *84699150
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rabbitmqadmin-cli
116
- requirement: &84125000 !ruby/object:Gem::Requirement
116
+ requirement: &84698920 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 1.0.0
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *84125000
124
+ version_requirements: *84698920
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
- requirement: &84124570 !ruby/object:Gem::Requirement
127
+ requirement: &84698690 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,7 +132,7 @@ dependencies:
132
132
  version: 2.6.0
133
133
  type: :development
134
134
  prerelease: false
135
- version_requirements: *84124570
135
+ version_requirements: *84698690
136
136
  description: JRuby RabbitMq bindings
137
137
  email:
138
138
  - lee.m.henson@gmail.com
@@ -152,8 +152,8 @@ files:
152
152
  - lib/euston-rabbitmq/euston/handler_binder.rb
153
153
  - lib/euston-rabbitmq/euston/queues.rb
154
154
  - lib/euston-rabbitmq/euston/retrying_subscription.rb
155
- - lib/euston-rabbitmq/rabbitmq_client/queue.rb
156
- - lib/euston-rabbitmq/rabbitmq_client/reactive_message.rb
155
+ - lib/euston-rabbitmq/hot_bunnies/queue.rb
156
+ - lib/euston-rabbitmq/hot_bunnies/reactive_message.rb
157
157
  - lib/euston-rabbitmq/reflection/constant_loader.rb
158
158
  - lib/euston-rabbitmq/reflection/handler_finder.rb
159
159
  - lib/euston-rabbitmq/reflection/handler_reference.rb
@@ -1,15 +0,0 @@
1
- class RabbitMQClient
2
- class ReactiveMessage
3
- def reject opts = {}
4
- self.reject!(opts.fetch :requeue, true)
5
- end
6
-
7
- def ack multiple = false
8
- self.ack!
9
- end
10
-
11
- def method
12
- self.envelope
13
- end
14
- end
15
- end