rosetta_queue 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +38 -0
- data/MIT-LICENSE.txt +19 -0
- data/README.rdoc +11 -0
- data/Rakefile +39 -0
- data/VERSION.yml +4 -0
- data/cucumber.yml +1 -0
- data/examples/sample_amqp_consumer.rb +45 -0
- data/examples/sample_amqp_fanout_consumer.rb +52 -0
- data/examples/sample_amqp_fanout_producer.rb +18 -0
- data/examples/sample_amqp_producer.rb +16 -0
- data/features/filtering.feature +31 -0
- data/features/messaging.feature +48 -0
- data/features/step_definitions/common_messaging_steps.rb +82 -0
- data/features/step_definitions/filtering_steps.rb +17 -0
- data/features/step_definitions/point_to_point_steps.rb +22 -0
- data/features/step_definitions/publish_subscribe_steps.rb +25 -0
- data/features/support/env.rb +25 -0
- data/features/support/sample_consumers.rb +29 -0
- data/lib/rosetta_queue.rb +23 -0
- data/lib/rosetta_queue/adapter.rb +39 -0
- data/lib/rosetta_queue/adapters/amqp.rb +48 -0
- data/lib/rosetta_queue/adapters/amqp_evented.rb +132 -0
- data/lib/rosetta_queue/adapters/amqp_synch.rb +123 -0
- data/lib/rosetta_queue/adapters/base.rb +27 -0
- data/lib/rosetta_queue/adapters/beanstalk.rb +56 -0
- data/lib/rosetta_queue/adapters/fake.rb +26 -0
- data/lib/rosetta_queue/adapters/null.rb +57 -0
- data/lib/rosetta_queue/adapters/stomp.rb +88 -0
- data/lib/rosetta_queue/base.rb +15 -0
- data/lib/rosetta_queue/consumer.rb +30 -0
- data/lib/rosetta_queue/consumer_managers/base.rb +24 -0
- data/lib/rosetta_queue/consumer_managers/evented.rb +43 -0
- data/lib/rosetta_queue/consumer_managers/threaded.rb +94 -0
- data/lib/rosetta_queue/core_ext/string.rb +22 -0
- data/lib/rosetta_queue/core_ext/time.rb +20 -0
- data/lib/rosetta_queue/destinations.rb +33 -0
- data/lib/rosetta_queue/exception_handler.rb +105 -0
- data/lib/rosetta_queue/exceptions.rb +10 -0
- data/lib/rosetta_queue/filters.rb +58 -0
- data/lib/rosetta_queue/logger.rb +27 -0
- data/lib/rosetta_queue/message_handler.rb +52 -0
- data/lib/rosetta_queue/producer.rb +21 -0
- data/lib/rosetta_queue/spec_helpers.rb +5 -0
- data/lib/rosetta_queue/spec_helpers/hash.rb +21 -0
- data/lib/rosetta_queue/spec_helpers/helpers.rb +47 -0
- data/lib/rosetta_queue/spec_helpers/publishing_matchers.rb +144 -0
- data/spec/rosetta_queue/adapter_spec.rb +101 -0
- data/spec/rosetta_queue/adapters/amqp_synchronous_spec.rb +277 -0
- data/spec/rosetta_queue/adapters/beanstalk_spec.rb +47 -0
- data/spec/rosetta_queue/adapters/fake_spec.rb +72 -0
- data/spec/rosetta_queue/adapters/null_spec.rb +31 -0
- data/spec/rosetta_queue/adapters/shared_adapter_behavior.rb +38 -0
- data/spec/rosetta_queue/adapters/shared_fanout_behavior.rb +20 -0
- data/spec/rosetta_queue/adapters/stomp_spec.rb +126 -0
- data/spec/rosetta_queue/consumer_managers/evented_spec.rb +56 -0
- data/spec/rosetta_queue/consumer_managers/shared_manager_behavior.rb +26 -0
- data/spec/rosetta_queue/consumer_managers/threaded_spec.rb +51 -0
- data/spec/rosetta_queue/consumer_spec.rb +99 -0
- data/spec/rosetta_queue/core_ext/string_spec.rb +15 -0
- data/spec/rosetta_queue/destinations_spec.rb +34 -0
- data/spec/rosetta_queue/exception_handler_spec.rb +106 -0
- data/spec/rosetta_queue/filters_spec.rb +57 -0
- data/spec/rosetta_queue/message_handler_spec.rb +47 -0
- data/spec/rosetta_queue/producer_spec.rb +77 -0
- data/spec/rosetta_queue/shared_messaging_behavior.rb +21 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +47 -0
- metadata +142 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe String do
|
4
|
+
describe "#camelize" do
|
5
|
+
it "should have code examples"
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#classify" do
|
9
|
+
it "should have code examples"
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#underscore" do
|
13
|
+
it "should have code examples"
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
module RosettaQueue
|
4
|
+
|
5
|
+
describe Destinations do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
Destinations.clear
|
9
|
+
end
|
10
|
+
|
11
|
+
after(:each) do
|
12
|
+
Destinations.clear
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should map destination to hash" do
|
16
|
+
|
17
|
+
Destinations.define do |queue|
|
18
|
+
queue.map :test_queue, "/queue/test_queue"
|
19
|
+
end
|
20
|
+
|
21
|
+
Destinations.lookup(:test_queue).should == "/queue/test_queue"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "#queue_names should return an array of the actuual queue names" do
|
25
|
+
Destinations.define do |queue|
|
26
|
+
queue.map :foo, "/queue/foo"
|
27
|
+
queue.map :bar, "/queue/bar"
|
28
|
+
end
|
29
|
+
|
30
|
+
Destinations.queue_names.should include("/queue/foo")
|
31
|
+
Destinations.queue_names.should include("/queue/bar")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
module RosettaQueue
|
4
|
+
|
5
|
+
describe ExceptionHandler do
|
6
|
+
|
7
|
+
after(:each) do
|
8
|
+
ExceptionHandler.reset_handlers
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
describe "::handle" do
|
13
|
+
it "runs the given block returning the block's return value" do
|
14
|
+
ExceptionHandler::handle do
|
15
|
+
"foo"
|
16
|
+
end.should == "foo"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "delegates raised exceptions to each related registered handler" do
|
20
|
+
# given
|
21
|
+
ExceptionHandler::register(:consuming, registered_handler = mock('exception handling'))
|
22
|
+
ExceptionHandler::register(:consuming, registered_handler2 = mock('exception handling'))
|
23
|
+
exception = StandardError.new
|
24
|
+
# expect
|
25
|
+
registered_handler.should_receive(:handle).with(exception, anything)
|
26
|
+
registered_handler2.should_receive(:handle).with(exception, anything)
|
27
|
+
# when
|
28
|
+
ExceptionHandler::handle(:consuming) do
|
29
|
+
raise exception
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it "does not delegate raised exceptions to unrelated handlers" do
|
34
|
+
# given
|
35
|
+
ExceptionHandler::register(:consuming, consuming_handler = mock('consumner handling'))
|
36
|
+
ExceptionHandler::register(:publishing, publishing_handler = mock('publishing handling'))
|
37
|
+
exception = StandardError.new
|
38
|
+
# expect
|
39
|
+
consuming_handler.should_receive(:handle).with(exception, anything)
|
40
|
+
publishing_handler.should_not_receive(:handle)
|
41
|
+
# when
|
42
|
+
ExceptionHandler::handle(:consuming) do
|
43
|
+
raise exception
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it "delegates all types of messaging exceptions to handlers registered under ':all'" do
|
48
|
+
# given
|
49
|
+
ExceptionHandler::register(:all, messaging_handler = mock('global message exception handling'))
|
50
|
+
exception = StandardError.new
|
51
|
+
# expect
|
52
|
+
messaging_handler.should_receive(:handle).with(exception, anything).twice
|
53
|
+
# when
|
54
|
+
ExceptionHandler::handle(:consuming) { raise exception }
|
55
|
+
ExceptionHandler::handle(:publishing) { raise exception }
|
56
|
+
end
|
57
|
+
|
58
|
+
it "passes any additional information (in form of a hash) to the registered handlers" do
|
59
|
+
# given
|
60
|
+
ExceptionHandler::register(:all, messaging_handler = mock('global message exception handling'))
|
61
|
+
info_hash = {:message => "this caused failure", :foo => "bar"}
|
62
|
+
# expect
|
63
|
+
messaging_handler.should_receive(:handle).with(anything, info_hash)
|
64
|
+
# when
|
65
|
+
ExceptionHandler::handle(:consuming, info_hash) { raise "FAIL" }
|
66
|
+
end
|
67
|
+
|
68
|
+
it "accepts a lambda for info and will pass it's evaluation along to the registered handlers" do
|
69
|
+
# given
|
70
|
+
ExceptionHandler::register(:all, messaging_handler = mock('global message exception handling'))
|
71
|
+
info_hash = {:message => "this caused failure", :foo => "bar"}
|
72
|
+
# expect
|
73
|
+
messaging_handler.should_receive(:handle).with(anything, info_hash)
|
74
|
+
# when
|
75
|
+
ExceptionHandler::handle(:consuming, lambda { info_hash }) { raise "FAIL" }
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
it "reraises the error when no handlers have been registed for the given action" do
|
81
|
+
ExceptionHandler::register(:consuming, consuming_handler = mock('consumner handling'))
|
82
|
+
running do
|
83
|
+
ExceptionHandler::handle(:publishing, {}) { raise "Foo" }
|
84
|
+
end.should raise_error(RuntimeError)
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "::register" do
|
91
|
+
# see the examples for ::handle as well- since they are related.
|
92
|
+
|
93
|
+
it "takes an exception handling block in place of a class" do
|
94
|
+
# given
|
95
|
+
ExceptionHandler::register(:all) do |exception, info|
|
96
|
+
RosettaQueue.logger.error "whoops"
|
97
|
+
end
|
98
|
+
# expect
|
99
|
+
RosettaQueue.logger.should_receive(:error).with("whoops")
|
100
|
+
# when
|
101
|
+
ExceptionHandler::handle(:consuming) { raise "FAIL" }
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
module RosettaQueue
|
4
|
+
|
5
|
+
describe Filters do
|
6
|
+
|
7
|
+
after(:each) do
|
8
|
+
Filters.reset
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#process_receiving" do
|
12
|
+
it "should process the passed in message with the defined receiving filter" do
|
13
|
+
Filters.define do |f|
|
14
|
+
f.receiving {|message| "Foo #{message}"}
|
15
|
+
end
|
16
|
+
|
17
|
+
Filters.process_receiving("Bar").should == "Foo Bar"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return the same message when no filter is defined" do
|
21
|
+
Filters.process_receiving("Bar").should == "Bar"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
['sending', 'receiving'].each do |action|
|
26
|
+
describe "#safe_process_#{action}" do
|
27
|
+
it "returns the orginal message if an exception occurs while filtering" do
|
28
|
+
Filters.define do |f|
|
29
|
+
f.send(action) { |message| raise "foo" }
|
30
|
+
end
|
31
|
+
|
32
|
+
Filters.send("safe_process_#{action}", "Bar").should == "Bar"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
describe "#process_sending" do
|
40
|
+
it "should process the passed in message with the defined sending filter" do
|
41
|
+
Filters.define do |f|
|
42
|
+
f.sending {|message| "Foo #{message}"}
|
43
|
+
end
|
44
|
+
|
45
|
+
Filters.process_sending("Bar").should == "Foo Bar"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return the same message when no filter is defined" do
|
49
|
+
Filters.process_sending("Bar").should == "Bar"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
module RosettaQueue
|
4
|
+
|
5
|
+
class SimplerHandler
|
6
|
+
include MessageHandler
|
7
|
+
subscribes_to :test_queue
|
8
|
+
options :my => 'options'
|
9
|
+
|
10
|
+
def on_message(filtered_message)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe MessageHandler do
|
15
|
+
before(:each) do
|
16
|
+
Filters.stub!(:safe_process_receiving => 'safely processed message')
|
17
|
+
@message_handler = SimplerHandler.new
|
18
|
+
Destinations.stub!(:lookup).and_return("/queue/test_queue")
|
19
|
+
ExceptionHandler.stub!(:handle).and_yield
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#handle_message" do
|
23
|
+
it "calls the ExceptionHandler for :publishing" do
|
24
|
+
ExceptionHandler.should_receive(:handle).with(:publishing, anything)
|
25
|
+
@message_handler.handle_message("foo")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "filters the message" do
|
29
|
+
Filters.should_receive(:process_receiving).with("hello")
|
30
|
+
@message_handler.handle_message("hello")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "provides additional message information to the ExceptionHandler" do
|
34
|
+
ExceptionHandler.should_receive(:handle).with do |_, hash_proc|
|
35
|
+
hash_proc.call.should == {
|
36
|
+
:message => "safely processed message",
|
37
|
+
:action => :consuming,
|
38
|
+
:destination => :test_queue,
|
39
|
+
:options => {:my => 'options'}}
|
40
|
+
end
|
41
|
+
@message_handler.handle_message("message")
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
module RosettaQueue
|
4
|
+
|
5
|
+
class TestProducer < Producer
|
6
|
+
|
7
|
+
publishes_to :test_queue
|
8
|
+
options :persistent => false
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
describe Producer do
|
13
|
+
|
14
|
+
before(:each) do
|
15
|
+
@adapter = mock("adapter", :send_message => nil)
|
16
|
+
RosettaQueue::Adapter.stub!(:instance).and_return(@adapter)
|
17
|
+
@gateway = TestProducer.new
|
18
|
+
|
19
|
+
Destinations.stub!(:lookup).and_return("/queue/test_queue")
|
20
|
+
end
|
21
|
+
|
22
|
+
it_should_behave_like "a messaging gateway object"
|
23
|
+
attr_reader :adapter, :gateway
|
24
|
+
|
25
|
+
|
26
|
+
describe "#publish" do
|
27
|
+
|
28
|
+
before(:each) do
|
29
|
+
@adapter = mock("adpater", :send_message => nil)
|
30
|
+
RosettaQueue::Adapter.stub!(:instance).and_return(@adapter)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should publish messages to queue with the options defined in the class" do
|
34
|
+
# TO DO: REFACTOR #publish METHOD SO THAT YOU PASS IN MESSAGE HANDLER AS WITH CONSUMER
|
35
|
+
pending
|
36
|
+
# expect
|
37
|
+
@adapter.should_receive(:send_message).with("/queue/test_queue", "Hello World!", {:persistent => false})
|
38
|
+
# when
|
39
|
+
@gateway.publish("Hello World!")
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
describe ".publish" do
|
45
|
+
it "should send the message to the adpater along with the options" do
|
46
|
+
# expect
|
47
|
+
@adapter.should_receive(:send_message).with("/queue/test_queue", "Hello World!", {:persistent => true})
|
48
|
+
# when
|
49
|
+
Producer.publish(:test_queue, "Hello World!", {:persistent => true})
|
50
|
+
end
|
51
|
+
|
52
|
+
it "delgates exception handling to the ExceptionHandler for :publishing" do
|
53
|
+
ExceptionHandler.should_receive(:handle).with(:publishing, anything)
|
54
|
+
Producer.publish(:test_queue, "Hello World!", {:persistent => true})
|
55
|
+
end
|
56
|
+
|
57
|
+
it "wraps the publishing in an ExceptionHandler::handler block" do
|
58
|
+
@adapter.should_not_receive(:send_message)
|
59
|
+
ExceptionHandler.stub!(:handle).and_return("I was wrapped")
|
60
|
+
Producer.publish(:test_queue, "m").should == "I was wrapped"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "provides additional message information to the ExceptionHandler" do
|
64
|
+
ExceptionHandler.should_receive(:handle).with do |_, hash_proc|
|
65
|
+
hash_proc.call.should == {
|
66
|
+
:message => "message",
|
67
|
+
:action => :publishing,
|
68
|
+
:destination => :test_queue,
|
69
|
+
:options => {:persistent => true}}
|
70
|
+
end
|
71
|
+
Producer.publish(:test_queue, "message", {:persistent => true})
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RosettaQueue
|
2
|
+
|
3
|
+
describe "a messaging gateway object", :shared => true do
|
4
|
+
|
5
|
+
it "#unsubscribe should be delegated to the adapter" do
|
6
|
+
pending
|
7
|
+
# expect
|
8
|
+
adapter.should_receive("unsubscribe")
|
9
|
+
# when
|
10
|
+
gateway.unsubscribe
|
11
|
+
end
|
12
|
+
|
13
|
+
it "#disconnect should be delegated to the adapter" do
|
14
|
+
# expect
|
15
|
+
adapter.should_receive("disconnect")
|
16
|
+
# when
|
17
|
+
gateway.disconnect
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
ENV["MESSAGING_ENV"] = "test"
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'spec'
|
5
|
+
require 'ruby-debug'
|
6
|
+
|
7
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
8
|
+
require 'rosetta_queue'
|
9
|
+
require 'rosetta_queue/adapters/null'
|
10
|
+
require 'rosetta_queue/adapters/fake'
|
11
|
+
require 'rosetta_queue/adapters/stomp'
|
12
|
+
require 'rosetta_queue/adapters/amqp'
|
13
|
+
require 'rosetta_queue/consumer_managers/base'
|
14
|
+
require 'rosetta_queue/consumer_managers/evented'
|
15
|
+
require 'rosetta_queue/consumer_managers/threaded'
|
16
|
+
require 'rosetta_queue/spec_helpers'
|
17
|
+
require 'rosetta_queue/consumer_managers/base'
|
18
|
+
require 'rosetta_queue/consumer_managers/evented'
|
19
|
+
require 'rosetta_queue/consumer_managers/threaded'
|
20
|
+
require File.dirname(__FILE__) + '/rosetta_queue/shared_messaging_behavior.rb'
|
21
|
+
|
22
|
+
class NullLogger
|
23
|
+
def info(*args); end
|
24
|
+
def debug(*args); end
|
25
|
+
def fatal(*args); end
|
26
|
+
def error(*args); end
|
27
|
+
def warn(*args); end
|
28
|
+
end
|
29
|
+
|
30
|
+
RosettaQueue.logger = NullLogger.new
|
31
|
+
|
32
|
+
alias :running :lambda
|
33
|
+
|
34
|
+
[:process, :receiving_with_handler, :receiving_once, :publishing, :disconnecting, :receiving_single_exchange, :receiving_exchange, :receiving].each do |action|
|
35
|
+
eval %Q{
|
36
|
+
def before_#{action}
|
37
|
+
yield
|
38
|
+
do_#{action}
|
39
|
+
end
|
40
|
+
alias during_#{action} before_#{action}
|
41
|
+
alias when_#{action} before_#{action}
|
42
|
+
def after_#{action}
|
43
|
+
do_#{action}
|
44
|
+
yield
|
45
|
+
end
|
46
|
+
}
|
47
|
+
end
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rosetta_queue
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben Mabey
|
8
|
+
- Chris Wyckoff
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-09-28 00:00:00 -06:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description: Messaging gateway API with adapters for many messaging systems available in Ruby. Messaging systems can be easily switched out with a small configuration change. Code for testing on the object and application level is also provided.
|
18
|
+
email: cbwyckoff@gmail.com
|
19
|
+
executables: []
|
20
|
+
|
21
|
+
extensions: []
|
22
|
+
|
23
|
+
extra_rdoc_files:
|
24
|
+
- MIT-LICENSE.txt
|
25
|
+
- README.rdoc
|
26
|
+
files:
|
27
|
+
- History.txt
|
28
|
+
- MIT-LICENSE.txt
|
29
|
+
- README.rdoc
|
30
|
+
- Rakefile
|
31
|
+
- VERSION.yml
|
32
|
+
- cucumber.yml
|
33
|
+
- features/filtering.feature
|
34
|
+
- features/messaging.feature
|
35
|
+
- features/step_definitions/common_messaging_steps.rb
|
36
|
+
- features/step_definitions/filtering_steps.rb
|
37
|
+
- features/step_definitions/point_to_point_steps.rb
|
38
|
+
- features/step_definitions/publish_subscribe_steps.rb
|
39
|
+
- features/support/env.rb
|
40
|
+
- features/support/sample_consumers.rb
|
41
|
+
- lib/rosetta_queue.rb
|
42
|
+
- lib/rosetta_queue/adapter.rb
|
43
|
+
- lib/rosetta_queue/adapters/amqp.rb
|
44
|
+
- lib/rosetta_queue/adapters/amqp_evented.rb
|
45
|
+
- lib/rosetta_queue/adapters/amqp_synch.rb
|
46
|
+
- lib/rosetta_queue/adapters/base.rb
|
47
|
+
- lib/rosetta_queue/adapters/beanstalk.rb
|
48
|
+
- lib/rosetta_queue/adapters/fake.rb
|
49
|
+
- lib/rosetta_queue/adapters/null.rb
|
50
|
+
- lib/rosetta_queue/adapters/stomp.rb
|
51
|
+
- lib/rosetta_queue/base.rb
|
52
|
+
- lib/rosetta_queue/consumer.rb
|
53
|
+
- lib/rosetta_queue/consumer_managers/base.rb
|
54
|
+
- lib/rosetta_queue/consumer_managers/evented.rb
|
55
|
+
- lib/rosetta_queue/consumer_managers/threaded.rb
|
56
|
+
- lib/rosetta_queue/core_ext/string.rb
|
57
|
+
- lib/rosetta_queue/core_ext/time.rb
|
58
|
+
- lib/rosetta_queue/destinations.rb
|
59
|
+
- lib/rosetta_queue/exception_handler.rb
|
60
|
+
- lib/rosetta_queue/exceptions.rb
|
61
|
+
- lib/rosetta_queue/filters.rb
|
62
|
+
- lib/rosetta_queue/logger.rb
|
63
|
+
- lib/rosetta_queue/message_handler.rb
|
64
|
+
- lib/rosetta_queue/producer.rb
|
65
|
+
- lib/rosetta_queue/spec_helpers.rb
|
66
|
+
- lib/rosetta_queue/spec_helpers/hash.rb
|
67
|
+
- lib/rosetta_queue/spec_helpers/helpers.rb
|
68
|
+
- lib/rosetta_queue/spec_helpers/publishing_matchers.rb
|
69
|
+
- spec/rosetta_queue/adapter_spec.rb
|
70
|
+
- spec/rosetta_queue/adapters/amqp_synchronous_spec.rb
|
71
|
+
- spec/rosetta_queue/adapters/beanstalk_spec.rb
|
72
|
+
- spec/rosetta_queue/adapters/fake_spec.rb
|
73
|
+
- spec/rosetta_queue/adapters/null_spec.rb
|
74
|
+
- spec/rosetta_queue/adapters/shared_adapter_behavior.rb
|
75
|
+
- spec/rosetta_queue/adapters/shared_fanout_behavior.rb
|
76
|
+
- spec/rosetta_queue/adapters/stomp_spec.rb
|
77
|
+
- spec/rosetta_queue/consumer_managers/evented_spec.rb
|
78
|
+
- spec/rosetta_queue/consumer_managers/shared_manager_behavior.rb
|
79
|
+
- spec/rosetta_queue/consumer_managers/threaded_spec.rb
|
80
|
+
- spec/rosetta_queue/consumer_spec.rb
|
81
|
+
- spec/rosetta_queue/core_ext/string_spec.rb
|
82
|
+
- spec/rosetta_queue/destinations_spec.rb
|
83
|
+
- spec/rosetta_queue/exception_handler_spec.rb
|
84
|
+
- spec/rosetta_queue/filters_spec.rb
|
85
|
+
- spec/rosetta_queue/message_handler_spec.rb
|
86
|
+
- spec/rosetta_queue/producer_spec.rb
|
87
|
+
- spec/rosetta_queue/shared_messaging_behavior.rb
|
88
|
+
- spec/spec.opts
|
89
|
+
- spec/spec_helper.rb
|
90
|
+
has_rdoc: true
|
91
|
+
homepage: http://github.com/cwyckoff/rosetta_queue
|
92
|
+
licenses: []
|
93
|
+
|
94
|
+
post_install_message:
|
95
|
+
rdoc_options:
|
96
|
+
- --charset=UTF-8
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: "0"
|
104
|
+
version:
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: "0"
|
110
|
+
version:
|
111
|
+
requirements: []
|
112
|
+
|
113
|
+
rubyforge_project: rosetta-queue
|
114
|
+
rubygems_version: 1.3.3
|
115
|
+
signing_key:
|
116
|
+
specification_version: 3
|
117
|
+
summary: Messaging gateway API with adapters for many messaging systems available in Ruby.
|
118
|
+
test_files:
|
119
|
+
- spec/rosetta_queue/adapter_spec.rb
|
120
|
+
- spec/rosetta_queue/adapters/amqp_synchronous_spec.rb
|
121
|
+
- spec/rosetta_queue/adapters/beanstalk_spec.rb
|
122
|
+
- spec/rosetta_queue/adapters/fake_spec.rb
|
123
|
+
- spec/rosetta_queue/adapters/null_spec.rb
|
124
|
+
- spec/rosetta_queue/adapters/shared_adapter_behavior.rb
|
125
|
+
- spec/rosetta_queue/adapters/shared_fanout_behavior.rb
|
126
|
+
- spec/rosetta_queue/adapters/stomp_spec.rb
|
127
|
+
- spec/rosetta_queue/consumer_managers/evented_spec.rb
|
128
|
+
- spec/rosetta_queue/consumer_managers/shared_manager_behavior.rb
|
129
|
+
- spec/rosetta_queue/consumer_managers/threaded_spec.rb
|
130
|
+
- spec/rosetta_queue/consumer_spec.rb
|
131
|
+
- spec/rosetta_queue/core_ext/string_spec.rb
|
132
|
+
- spec/rosetta_queue/destinations_spec.rb
|
133
|
+
- spec/rosetta_queue/exception_handler_spec.rb
|
134
|
+
- spec/rosetta_queue/filters_spec.rb
|
135
|
+
- spec/rosetta_queue/message_handler_spec.rb
|
136
|
+
- spec/rosetta_queue/producer_spec.rb
|
137
|
+
- spec/rosetta_queue/shared_messaging_behavior.rb
|
138
|
+
- spec/spec_helper.rb
|
139
|
+
- examples/sample_amqp_consumer.rb
|
140
|
+
- examples/sample_amqp_fanout_consumer.rb
|
141
|
+
- examples/sample_amqp_fanout_producer.rb
|
142
|
+
- examples/sample_amqp_producer.rb
|