euston-rabbitmq 1.1.0-java → 1.2.0-java

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.0'
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
@@ -45,12 +45,12 @@ Gem::Specification.new do |s|
45
45
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
46
46
 
47
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'
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
52
  s.add_dependency 'i18n', '~> 0.5.0'
53
- s.add_dependency 'jessica', '~> 1.0.0' if RUBY_PLATFORM.to_s == 'java'
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'
@@ -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
  }
@@ -57,13 +57,13 @@ module Euston
57
57
  message.delete :failures
58
58
  message = create_message_failed_message error, message, reactive_message
59
59
 
60
- options = { :key => 'events.message_failed' }
60
+ options = { :routing_key => 'events.message_failed' }
61
61
  exchange = :events
62
62
  else
63
63
  debug_message = "Message failed, retrying"
64
64
 
65
- options = { :key => reactive_message.method.routing_key }
66
- exchange = reactive_message.method.routing_key.split('.').first.to_sym
65
+ options = { :routing_key => reactive_message.headers.routing_key }
66
+ exchange = reactive_message.headers.routing_key.split('.').first.to_sym
67
67
  end
68
68
 
69
69
  options = default_publish_options.merge options
@@ -76,21 +76,28 @@ module Euston
76
76
 
77
77
  reactive_message.ack
78
78
  rescue StandardError => e
79
- reactive_message.reject :requeue => true
79
+ reactive_message.reject
80
80
  raise e
81
81
  end
82
82
  end
83
83
 
84
84
  def log_decode_failure message, error
85
85
  text = "A handler queue subscription failed. [Error] #{error.message} [Payload] #{message}"
86
- error = Euston::RabbitMq::MessageDecodeFailedError.new text
87
- error.set_backtrace error.backtrace
86
+ wrapper = Euston::RabbitMq::MessageDecodeFailedError.new text
87
+ wrapper.set_backtrace error.backtrace
88
88
 
89
- raise error
89
+ raise wrapper
90
90
  end
91
91
 
92
92
  def queue
93
- @queue ||= get_queue @channel, @queue_name
93
+ if @queue.nil?
94
+ @queue = get_queue @channel, @queue_name
95
+ @queue.when(:message_decode_failed => method(:log_decode_failure),
96
+ :message_failed => method(:handle_failure),
97
+ :message_received => method(:call_handler))
98
+ end
99
+
100
+ @queue
94
101
  end
95
102
  end
96
103
  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.0"
4
4
  end
5
5
  end
@@ -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'
@@ -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
@@ -2,7 +2,7 @@
2
2
  name: euston-rabbitmq
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.1.0
5
+ version: 1.2.0
6
6
  platform: java
7
7
  authors:
8
8
  - Lee Henson
@@ -10,139 +10,139 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-03 00:00:00.000000000 +01:00
13
+ date: 2011-10-12 00:00:00.000000000 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
18
- version_requirements: &2196 !ruby/object:Gem::Requirement
18
+ version_requirements: &2210 !ruby/object:Gem::Requirement
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.0.10
23
23
  none: false
24
- requirement: *2196
24
+ requirement: *2210
25
25
  prerelease: false
26
26
  type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: euston
29
- version_requirements: &2214 !ruby/object:Gem::Requirement
29
+ version_requirements: &2228 !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.0
33
+ version: 1.2.0
34
34
  none: false
35
- requirement: *2214
35
+ requirement: *2228
36
36
  prerelease: false
37
37
  type: :runtime
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: euston-eventstore
40
- version_requirements: &2230 !ruby/object:Gem::Requirement
40
+ version_requirements: &2244 !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- version: 1.1.0
44
+ version: 1.2.0
45
45
  none: false
46
- requirement: *2230
46
+ requirement: *2244
47
47
  prerelease: false
48
48
  type: :runtime
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: hash-keys
51
- version_requirements: &2246 !ruby/object:Gem::Requirement
51
+ version_requirements: &2260 !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ~>
54
54
  - !ruby/object:Gem::Version
55
55
  version: 1.0.0
56
56
  none: false
57
- requirement: *2246
57
+ requirement: *2260
58
58
  prerelease: false
59
59
  type: :runtime
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: hollywood
62
- version_requirements: &2262 !ruby/object:Gem::Requirement
62
+ version_requirements: &2276 !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - ~>
65
65
  - !ruby/object:Gem::Version
66
66
  version: 1.0.0
67
67
  none: false
68
- requirement: *2262
68
+ requirement: *2276
69
69
  prerelease: false
70
70
  type: :runtime
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: i18n
73
- version_requirements: &2278 !ruby/object:Gem::Requirement
73
+ version_requirements: &2292 !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: 0.5.0
78
78
  none: false
79
- requirement: *2278
79
+ requirement: *2292
80
80
  prerelease: false
81
81
  type: :runtime
82
82
  - !ruby/object:Gem::Dependency
83
- name: jessica
84
- version_requirements: &2294 !ruby/object:Gem::Requirement
83
+ name: hot_bunnies
84
+ version_requirements: &2308 !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ~>
87
87
  - !ruby/object:Gem::Version
88
- version: 1.0.0
88
+ version: 1.3.0.pre1
89
89
  none: false
90
- requirement: *2294
90
+ requirement: *2308
91
91
  prerelease: false
92
92
  type: :runtime
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: safely
95
- version_requirements: &2310 !ruby/object:Gem::Requirement
95
+ version_requirements: &2324 !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - ~>
98
98
  - !ruby/object:Gem::Version
99
99
  version: 0.3.0
100
100
  none: false
101
- requirement: *2310
101
+ requirement: *2324
102
102
  prerelease: false
103
103
  type: :runtime
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: awesome_print
106
- version_requirements: &2326 !ruby/object:Gem::Requirement
106
+ version_requirements: &2340 !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.4.0
111
111
  none: false
112
- requirement: *2326
112
+ requirement: *2340
113
113
  prerelease: false
114
114
  type: :development
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: fuubar
117
- version_requirements: &2344 !ruby/object:Gem::Requirement
117
+ version_requirements: &2358 !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - ~>
120
120
  - !ruby/object:Gem::Version
121
121
  version: 0.0.0
122
122
  none: false
123
- requirement: *2344
123
+ requirement: *2358
124
124
  prerelease: false
125
125
  type: :development
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rabbitmqadmin-cli
128
- version_requirements: &2360 !ruby/object:Gem::Requirement
128
+ version_requirements: &2374 !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - ~>
131
131
  - !ruby/object:Gem::Version
132
132
  version: 1.0.0
133
133
  none: false
134
- requirement: *2360
134
+ requirement: *2374
135
135
  prerelease: false
136
136
  type: :development
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: rspec
139
- version_requirements: &2376 !ruby/object:Gem::Requirement
139
+ version_requirements: &2390 !ruby/object:Gem::Requirement
140
140
  requirements:
141
141
  - - ~>
142
142
  - !ruby/object:Gem::Version
143
143
  version: 2.6.0
144
144
  none: false
145
- requirement: *2376
145
+ requirement: *2390
146
146
  prerelease: false
147
147
  type: :development
148
148
  description: JRuby RabbitMq bindings
@@ -164,8 +164,8 @@ files:
164
164
  - lib/euston-rabbitmq/euston/handler_binder.rb
165
165
  - lib/euston-rabbitmq/euston/queues.rb
166
166
  - lib/euston-rabbitmq/euston/retrying_subscription.rb
167
- - lib/euston-rabbitmq/rabbitmq_client/queue.rb
168
- - lib/euston-rabbitmq/rabbitmq_client/reactive_message.rb
167
+ - lib/euston-rabbitmq/hot_bunnies/queue.rb
168
+ - lib/euston-rabbitmq/hot_bunnies/reactive_message.rb
169
169
  - lib/euston-rabbitmq/reflection/constant_loader.rb
170
170
  - lib/euston-rabbitmq/reflection/handler_finder.rb
171
171
  - 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