message_queue 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d43c890e14170d4f2fbc39a359b155a2e4ea94d
4
- data.tar.gz: a6501eccd4b0f1d3745f465360389594867bb062
3
+ metadata.gz: e139a22eb92dc83672337ded0224ee8ae245ddad
4
+ data.tar.gz: c78ce34bfdd40ddcde86691b35e599610621b5c4
5
5
  SHA512:
6
- metadata.gz: 3345bb10af66d6872a97a4c1e527fd825c46fca4af09be6e818b05e02f71d94e8d258517a90515b4cee4f30377841d36c1424471318030a86603b317909b4133
7
- data.tar.gz: 7b1a2f3b0966f6a7e79ae70210389aba52a07c4dff5220baf4a85ef4e4200a16fdc8d326a909092b33e1febd71b3a27399af69aa4ccf46132099cb003688aff0
6
+ metadata.gz: 5a2e5be7579e33fd0ac8bdef724eedeb8a78151128e0c7c5ec175b0e64833d56887308d5345c53c070cfdf2e8352ef097e535aefa41bc2dd5af728eb9eb77cd5
7
+ data.tar.gz: 804f366204e4bf1b979a2938e8bab9a760cac1085f6827986ae71da6a751f2d3e53bea12885fa218a41b523fe990dff4a561493ad2b06d6484bd658ea56974c6
data/Gemfile CHANGED
@@ -2,3 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in message_queue.gemspec
4
4
  gemspec
5
+
6
+ gem "bunny"
7
+ gem "msgpack"
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MessageQueue
2
2
 
3
- TODO: Write a gem description
3
+ A common interface to multiple message queues libraries.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,37 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ ```ruby
22
+ MessageQueue.with_connection(:adapter => :bunny, :serializer => :message_pack) do |conn|
23
+ publisher = conn.new_publisher(
24
+ :exchange => {
25
+ :name => "time",
26
+ :type => :topic
27
+ },
28
+ :message => {
29
+ :routing_key => "time.now"
30
+ }
31
+ )
32
+
33
+ consumer = conn.new_consumer(
34
+ :queue => {
35
+ :name => "print_time_now"
36
+ },
37
+ :exchange => {
38
+ :name => "time",
39
+ :routing_key => "time.#"
40
+ }
41
+ )
42
+
43
+ consumer.subscribe do |delivery_info, metadata, payload|
44
+ puts "Received message: #{payload}"
45
+ end
46
+
47
+ publisher.publish Time.now.to_s
48
+
49
+ sleep 1
50
+ end
51
+ ```
22
52
 
23
53
  ## Contributing
24
54
 
data/Rakefile CHANGED
@@ -1 +1,37 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ #############################################################################
4
+ #
5
+ # Helper functions
6
+ #
7
+ #############################################################################
8
+
9
+ def name
10
+ @name ||= Dir['*.gemspec'].first.split('.').first
11
+ end
12
+
13
+ #############################################################################
14
+ #
15
+ # Standard tasks
16
+ #
17
+ #############################################################################
18
+
19
+ task :default => :test
20
+
21
+ require 'rake/testtask'
22
+ Rake::TestTask.new(:test) do |test|
23
+ test.libs << 'lib' << 'test'
24
+ test.pattern = 'test/**/*_test.rb'
25
+ test.verbose = true
26
+ end
27
+
28
+ desc "Open an irb session preloaded with this library"
29
+ task :console do
30
+ sh "irb -rubygems -r ./lib/#{name}.rb"
31
+ end
32
+
33
+ #############################################################################
34
+ #
35
+ # Custom tasks (add your own tasks here)
36
+ #
37
+ #############################################################################
@@ -0,0 +1,20 @@
1
+ require_relative "../lib/message_queue"
2
+
3
+ MessageQueue.with_connection(:adapter => :bunny, :serializer => :message_pack) do |conn|
4
+ consumer = conn.new_consumer(
5
+ :queue => {
6
+ :name => "print_time_now"
7
+ },
8
+ :exchange => {
9
+ :name => "time",
10
+ :routing_key => "time.#"
11
+ },
12
+ :subscribe => {
13
+ :block => true
14
+ }
15
+ )
16
+
17
+ consumer.subscribe do |delivery_info, metadata, payload|
18
+ puts "Received message: #{payload}"
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "../lib/message_queue"
2
+
3
+ MessageQueue.with_connection(:adapter => :bunny, :serializer => :message_pack) do |conn|
4
+ publisher = conn.new_publisher(
5
+ :exchange => {
6
+ :name => "time",
7
+ :type => :topic
8
+ },
9
+ :message => {
10
+ :routing_key => "time.now"
11
+ }
12
+ )
13
+
14
+ publisher.publish Time.now.to_s
15
+ end
data/lib/message_queue.rb CHANGED
@@ -1,5 +1,81 @@
1
1
  require "message_queue/version"
2
+ require "message_queue/adapter"
3
+ require "message_queue/serializer"
2
4
 
3
5
  module MessageQueue
4
- # Your code goes here...
6
+ extend self
7
+
8
+ ADAPTERS = [:bunny]
9
+ SERIALIZERS = [:plain, :message_pack]
10
+
11
+ # Public: Initialize a connection to a message queue.
12
+ #
13
+ # options - The Hash options used to initialize a connection
14
+ # :adapter - The Symbol adapter, currently only :bunny is supported.
15
+ # Detailed options see individual adapter implementation.
16
+ # :serializer - The Symbol serializer for serialization.
17
+ #
18
+ # Returns the connection for the specified message queue.
19
+ # Raises a RuntimeError if an adapter can't be found.
20
+ def new_connection(options = {})
21
+ adapter = load_adapter(options[:adapter])
22
+ raise "Missing adapter #{options[:adapter]}" unless adapter
23
+
24
+ serializer = load_serializer(options[:serializer])
25
+ raise "Missing serializer #{options[:serializer]}" unless serializer
26
+
27
+ adapter.new_connection(serializer, options)
28
+ end
29
+
30
+ # Public: Initialize a connection to a message queue, connect and execute code in a block.
31
+ #
32
+ # options - The Hash options used to initialize a connection
33
+ # :adapter - The Symbol adapter, currently only :bunny is supported.
34
+ # Detailed options see individual adapter implementation.
35
+ # :serializer - The Symbol serializer for serialization.
36
+ # block - The code to execute. The connection object with be passed in.
37
+ #
38
+ # Returns nothing
39
+ # Raises a RuntimeError if an adapter can't be found.
40
+ def with_connection(options = {}, &block)
41
+ connection = new_connection(options)
42
+ connection.with_connection(&block)
43
+ end
44
+
45
+ # Internal: Load an adapter by name
46
+ #
47
+ # Returns the adapter or nil if it can't find it
48
+ def load_adapter(name)
49
+ ADAPTERS.each do |a|
50
+ if a.to_s == name.to_s
51
+ require_relative "message_queue/adapters/#{name}"
52
+ klass_name = klass_name_for(name)
53
+ return MessageQueue::Adapters.const_get(klass_name)
54
+ end
55
+ end
56
+
57
+ nil
58
+ end
59
+
60
+ # Internal: Load a serializer by name
61
+ #
62
+ # Returns the serializer or nil if it can't find it
63
+ def load_serializer(name)
64
+ SERIALIZERS.each do |s|
65
+ if s.to_s == name.to_s
66
+ require_relative "message_queue/serializers/#{name}"
67
+ klass_name = klass_name_for(name)
68
+ return MessageQueue::Serializers.const_get(klass_name)
69
+ end
70
+ end
71
+
72
+ nil
73
+ end
74
+
75
+ # Internal: Return the class name for name
76
+ #
77
+ # Returns the class name for specified string
78
+ def klass_name_for(name)
79
+ name.to_s.split("_").map(&:capitalize) * ""
80
+ end
5
81
  end
@@ -0,0 +1,15 @@
1
+ require "singleton"
2
+
3
+ module MessageQueue
4
+ module Adapters
5
+ class Adapter
6
+ include Singleton
7
+
8
+ class << self
9
+ def new_connection(serializer, options = {})
10
+ instance.new_connection(serializer, options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ require "bunny"
2
+
3
+ module MessageQueue
4
+ module Adapters
5
+ class Bunny < Adapter
6
+ # Public: Initialize a RabbitMQ connection.
7
+ #
8
+ # options - The Hash options used to initialize a connection.
9
+ # :uri - The String URI described in http://rubybunny.info/articles/connecting.html.
10
+ #
11
+ # Returns MessageQueue::Adapters::Bunny::Connection if the options are valid.
12
+ # Raises ArgumentError when connection URI schema is not amqp or amqps, or the path contains multiple segments.
13
+ def new_connection(serializer, options = {})
14
+ settings = options[:uri] ? AMQ::Settings.parse_amqp_url(options[:uri]).merge(options) : options
15
+ Connection.new(serializer, settings)
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ require "message_queue/adapters/bunny/connection"
@@ -0,0 +1,64 @@
1
+ class MessageQueue::Adapters::Bunny::Connection
2
+ attr_reader :serializer, :settings, :connection
3
+
4
+ # Public: Initialize a new Bunny connection.
5
+ #
6
+ # serializer - The Serializer for dumping and loading payload.
7
+ #
8
+ # settings - The Hash settings used to connect with Bunny.
9
+ # Details in http://rubybunny.info/articles/connecting.html.
10
+ #
11
+ # Returns a Connection wrapper for Bunny.
12
+ def initialize(serializer, settings)
13
+ @serializer = serializer
14
+ @settings = settings
15
+ end
16
+
17
+ # Public: Connect to RabbitMQ
18
+ #
19
+ # Returns the Bunny instance
20
+ def connect
21
+ @connection ||= begin
22
+ bunny = ::Bunny.new(settings)
23
+ bunny.start
24
+ bunny
25
+ end
26
+ end
27
+
28
+ # Public: Disconnect from RabbitMQ
29
+ #
30
+ # Returns nothing
31
+ def disconnect
32
+ if @connection
33
+ @connection.close if @connection.open?
34
+ @connection = nil
35
+ end
36
+ end
37
+
38
+ # Public: Connect to RabbitMQ, execute the block and disconnect
39
+ #
40
+ # Returns nothing
41
+ def with_connection(&block)
42
+ begin
43
+ connect
44
+ block.call(self)
45
+ ensure
46
+ disconnect
47
+ end
48
+ end
49
+
50
+ def new_publisher(options)
51
+ raise "No connection to RabbitMQ" unless connection
52
+
53
+ Publisher.new(self, options)
54
+ end
55
+
56
+ def new_consumer(options)
57
+ raise "No connection to RabbitMQ" unless connection
58
+
59
+ Consumer.new(self, options)
60
+ end
61
+ end
62
+
63
+ require "message_queue/adapters/bunny/publisher"
64
+ require "message_queue/adapters/bunny/consumer"
@@ -0,0 +1,61 @@
1
+ class MessageQueue::Adapters::Bunny::Connection::Consumer
2
+ attr_reader :connection
3
+ attr_reader :queue_options, :queue_name
4
+ attr_reader :exchange_options, :exchange_name, :exchange_routing_key
5
+ attr_reader :subscribe_options
6
+
7
+ # Public: Initialize a new Bunny consumer.
8
+ #
9
+ # connection - The Bunny Connection.
10
+ # options - The Hash options used to initialize the exchange
11
+ # of a consumer:
12
+ # :queue -
13
+ # :name - The String queue name.
14
+ # :durable - The Boolean queue durability.
15
+ # :exchange -
16
+ # :name - The String exchange name.
17
+ # :routing_key - The String exchange routing key.
18
+ # :subscribe -
19
+ # :ack - The Boolean indicate if it acks.
20
+ # :block - The Boolean indicate if it blocks.
21
+ # Detailed options see
22
+ # https://github.com/ruby-amqp/bunny/blob/master/lib/bunny/queue.rb
23
+ # and
24
+ # https://github.com/ruby-amqp/bunny/blob/master/lib/bunny/exchange.rb.
25
+ #
26
+ # Returns a Consumer.
27
+ def initialize(connection, options = {})
28
+ @connection = connection
29
+
30
+ options = options.dup
31
+
32
+ @queue_options = options.fetch(:queue)
33
+ @queue_name = queue_options.delete(:name) || (raise "Missing queue name")
34
+
35
+ @exchange_options = options.fetch(:exchange)
36
+ @exchange_name = exchange_options.delete(:name) || (raise "Missing exchange name")
37
+ @exchange_routing_key = exchange_options.delete(:routing_key) || queue_name
38
+
39
+ @subscribe_options = options.fetch(:subscribe, {})
40
+ end
41
+
42
+ def subscribe(options = {}, &block)
43
+ @subscription = queue.subscribe(subscribe_options.merge(options)) do |delivery_info, metadata, payload|
44
+ block.call(delivery_info, metadata, connection.serializer.load(payload))
45
+ end
46
+ end
47
+
48
+ def unsubscribe
49
+ @subscription.cancel if @subscription
50
+ end
51
+
52
+ def queue
53
+ @queue ||= channel.queue(queue_name, queue_options).bind(exchange_name, :routing_key => exchange_routing_key)
54
+ end
55
+
56
+ private
57
+
58
+ def channel
59
+ connection.connection.create_channel
60
+ end
61
+ end
@@ -0,0 +1,40 @@
1
+ class MessageQueue::Adapters::Bunny::Connection::Publisher
2
+ attr_reader :connection, :exchange
3
+ attr_reader :exchange_options, :exchange_name, :exchange_type
4
+ attr_reader :message_options
5
+
6
+ # Public: Initialize a new Bunny publisher.
7
+ #
8
+ # connection - The Bunny Connection.
9
+ # options - The Hash options used to initialize the exchange
10
+ # of a publisher:
11
+ # :exchange -
12
+ # :name - The String exchange name.
13
+ # :type - The Symbol exchange type.
14
+ # :durable - The Boolean exchange durability.
15
+ # :message -
16
+ # :routing_key - The String message routing key.
17
+ # :persistent - The Boolean indicate if the
18
+ # message persisted to disk .
19
+ # Detailed options see
20
+ # https://github.com/ruby-amqp/bunny/blob/master/lib/bunny/exchange.rb.
21
+ #
22
+ # Returns a Publisher.
23
+ def initialize(connection, options = {})
24
+ @connection = connection
25
+
26
+ options = options.dup
27
+
28
+ @exchange_options = options.fetch(:exchange)
29
+ @exchange_name = exchange_options.delete(:name) || (raise "Missing exchange name")
30
+ @exchange_type = exchange_options.delete(:type) || (raise "Missing exchange type")
31
+
32
+ @message_options = options.fetch(:message)
33
+
34
+ @exchange = connection.connection.default_channel.send(exchange_type, exchange_name, exchange_options)
35
+ end
36
+
37
+ def publish(payload, options = {})
38
+ exchange.publish(connection.serializer.dump(payload), message_options.merge(options))
39
+ end
40
+ end
@@ -0,0 +1,19 @@
1
+ require "singleton"
2
+
3
+ module MessageQueue
4
+ module Serializers
5
+ class Serializer
6
+ include Singleton
7
+
8
+ class << self
9
+ def load(string, options = {})
10
+ instance.load(string, options)
11
+ end
12
+
13
+ def dump(object, options = {})
14
+ instance.dump(object, options)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ require "msgpack"
2
+
3
+ module MessageQueue
4
+ module Serializers
5
+ class MessagePack < Serializer
6
+ def load(string, options = {})
7
+ ::MessagePack.unpack(string)
8
+ end
9
+
10
+ def dump(object, options = {})
11
+ ::MessagePack.pack(object)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module MessageQueue
2
+ module Serializers
3
+ class Plain < Serializer
4
+ def load(string, options = {})
5
+ string
6
+ end
7
+
8
+ def dump(object, options = {})
9
+ object
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module MessageQueue
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
8
8
  spec.version = MessageQueue::VERSION
9
9
  spec.authors = ["Jingwen Owen Ou"]
10
10
  spec.email = ["jingweno@gmail.com"]
11
- spec.description = %q{A command interface to multiple message queues libraries.}
12
- spec.summary = %q{A command interface to multiple message queues libraries.}
13
- spec.homepage = ""
11
+ spec.description = %q{A common interface to multiple message queues libraries.}
12
+ spec.summary = %q{A common interface to multiple message queues libraries.}
13
+ spec.homepage = "https://github.com/jingweno/message_queue"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -18,6 +18,5 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
21
  spec.add_development_dependency "rake"
23
22
  end
@@ -0,0 +1,82 @@
1
+ require_relative "../test_helper"
2
+ require_relative "../../lib/message_queue/serializers/plain"
3
+ require_relative "../../lib/message_queue/adapters/bunny"
4
+
5
+ class BunnyTest < Test::Unit::TestCase
6
+ def test_new_connection
7
+ connection = MessageQueue::Adapters::Bunny.new_connection(
8
+ MessageQueue::Serializers::Plain,
9
+ :uri => "amqp://user:pass@host/vhost",
10
+ :tls_certificates => ["path"])
11
+ assert_equal "amqp", connection.settings[:scheme]
12
+ assert_equal ["path"], connection.settings[:tls_certificates]
13
+
14
+ connection = MessageQueue::Adapters::Bunny.new_connection MessageQueue::Serializers::Plain
15
+ bunny = connection.connect
16
+ assert bunny.open?
17
+
18
+ connection.disconnect
19
+ assert bunny.closed?
20
+ end
21
+
22
+ def test_new_publisher
23
+ connection = MessageQueue::Adapters::Bunny.new_connection MessageQueue::Serializers::Plain
24
+ connection.with_connection do |conn|
25
+ publisher = conn.new_publisher(
26
+ :exchange => {
27
+ :name => "test",
28
+ :type => :direct
29
+ },
30
+ :message => {
31
+ :routing_key => "test"
32
+ }
33
+ )
34
+
35
+ assert_equal "test", publisher.exchange_name
36
+ assert_equal :direct, publisher.exchange_type
37
+ assert_equal "test", publisher.message_options[:routing_key]
38
+
39
+ msg = Time.now.to_s
40
+ publisher.publish msg
41
+
42
+ ch = connection.connection.create_channel
43
+ queue = ch.queue("test")
44
+ _, _, m = queue.pop
45
+
46
+ assert_equal msg, m
47
+ end
48
+ end
49
+
50
+ def test_new_consumer
51
+ connection = MessageQueue::Adapters::Bunny.new_connection MessageQueue::Serializers::Plain
52
+ connection.with_connection do |conn|
53
+ consumer = conn.new_consumer(
54
+ :queue => {
55
+ :name => "test"
56
+ },
57
+ :exchange => {
58
+ :name => "test"
59
+ }
60
+ )
61
+
62
+ assert_equal "test", consumer.queue_name
63
+ assert_equal "test", consumer.exchange_name
64
+
65
+ publisher = conn.new_publisher(
66
+ :exchange => {
67
+ :name => "test",
68
+ :type => :direct
69
+ },
70
+ :message => {
71
+ :routing_key => "test"
72
+ }
73
+ )
74
+
75
+ msg = Time.now.to_s
76
+ publisher.publish msg
77
+
78
+ _, _, m = consumer.queue.pop
79
+ assert_equal msg, m
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,30 @@
1
+ require_relative "test_helper"
2
+
3
+ class MessageQueueTest < Test::Unit::TestCase
4
+ def test_load_adapter
5
+ adapter = MessageQueue.load_adapter(:bunny)
6
+ assert_equal "MessageQueue::Adapters::Bunny", adapter.name
7
+
8
+ adapter = MessageQueue.load_adapter(:foo)
9
+ assert_nil adapter
10
+ end
11
+
12
+ def test_load_serializer
13
+ serializer = MessageQueue.load_serializer(:message_pack)
14
+ assert_equal "MessageQueue::Serializers::MessagePack", serializer.name
15
+
16
+ serializer = MessageQueue.load_serializer(:foo)
17
+ assert_nil serializer
18
+ end
19
+
20
+ def test_new_connection
21
+ assert_raises RuntimeError do
22
+ MessageQueue.new_connection(:adapter => :foo)
23
+ end
24
+
25
+ connection = MessageQueue.new_connection(:adapter => :bunny,
26
+ :serializer => :message_pack,
27
+ :uri => "amqp://user:pass@host/vhost")
28
+ assert_equal "MessageQueue::Adapters::Bunny::Connection", connection.class.to_s
29
+ end
30
+ end
@@ -0,0 +1,10 @@
1
+ require_relative "../test_helper"
2
+ require_relative "../../lib/message_queue/serializers/message_pack"
3
+
4
+ class MessagePackTest < Test::Unit::TestCase
5
+ def test_dump_and_load
6
+ dump = MessageQueue::Serializers::MessagePack.dump "foo" => "bar"
7
+ loaded = MessageQueue::Serializers::MessagePack.load dump
8
+ assert_equal "bar", loaded["foo"]
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require_relative "../test_helper"
2
+ require_relative "../../lib/message_queue/serializers/plain"
3
+
4
+ class PlainTest < Test::Unit::TestCase
5
+ def test_dump_and_load
6
+ dump = MessageQueue::Serializers::Plain.dump "foo" => "bar"
7
+ loaded = MessageQueue::Serializers::Plain.load dump
8
+ assert_equal "bar", loaded["foo"]
9
+ end
10
+ end
@@ -0,0 +1,2 @@
1
+ adapter: bunny
2
+ url: amqp://user:pass@host/vhost
@@ -0,0 +1,2 @@
1
+ require "test/unit"
2
+ require_relative "../lib/message_queue"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: message_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jingwen Owen Ou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-23 00:00:00.000000000 Z
11
+ date: 2013-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -38,7 +24,7 @@ dependencies:
38
24
  - - '>='
39
25
  - !ruby/object:Gem::Version
40
26
  version: '0'
41
- description: A command interface to multiple message queues libraries.
27
+ description: A common interface to multiple message queues libraries.
42
28
  email:
43
29
  - jingweno@gmail.com
44
30
  executables: []
@@ -50,10 +36,26 @@ files:
50
36
  - LICENSE.txt
51
37
  - README.md
52
38
  - Rakefile
39
+ - examples/consumer.rb
40
+ - examples/publisher.rb
53
41
  - lib/message_queue.rb
42
+ - lib/message_queue/adapter.rb
43
+ - lib/message_queue/adapters/bunny.rb
44
+ - lib/message_queue/adapters/bunny/connection.rb
45
+ - lib/message_queue/adapters/bunny/consumer.rb
46
+ - lib/message_queue/adapters/bunny/publisher.rb
47
+ - lib/message_queue/serializer.rb
48
+ - lib/message_queue/serializers/message_pack.rb
49
+ - lib/message_queue/serializers/plain.rb
54
50
  - lib/message_queue/version.rb
55
51
  - message_queue.gemspec
56
- homepage: ''
52
+ - test/adapters/bunny_test.rb
53
+ - test/message_queue_test.rb
54
+ - test/serializers/message_pack_test.rb
55
+ - test/serializers/plain_test.rb
56
+ - test/support/message_queue.yml
57
+ - test/test_helper.rb
58
+ homepage: https://github.com/jingweno/message_queue
57
59
  licenses:
58
60
  - MIT
59
61
  metadata: {}
@@ -76,5 +78,11 @@ rubyforge_project:
76
78
  rubygems_version: 2.0.3
77
79
  signing_key:
78
80
  specification_version: 4
79
- summary: A command interface to multiple message queues libraries.
80
- test_files: []
81
+ summary: A common interface to multiple message queues libraries.
82
+ test_files:
83
+ - test/adapters/bunny_test.rb
84
+ - test/message_queue_test.rb
85
+ - test/serializers/message_pack_test.rb
86
+ - test/serializers/plain_test.rb
87
+ - test/support/message_queue.yml
88
+ - test/test_helper.rb