stapfen 2.1.1 → 2.2.0
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +2 -1
- data/README.md +9 -2
- data/lib/stapfen/client/kafka.rb +76 -0
- data/lib/stapfen/destination.rb +4 -0
- data/lib/stapfen/message.rb +16 -4
- data/lib/stapfen/version.rb +1 -1
- data/lib/stapfen/worker.rb +37 -4
- data/lib/stapfen.rb +0 -1
- data/spec/client/jms_spec.rb +5 -5
- data/spec/client/kafka_spec.rb +54 -0
- data/spec/destination_spec.rb +13 -0
- data/spec/logger_spec.rb +2 -3
- data/spec/spec_helper.rb +4 -1
- data/spec/worker_spec.rb +34 -13
- data/stapfen.gemspec +17 -12
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01629a450316fa2089bd559e2ec2df8bb3b79fe7
|
4
|
+
data.tar.gz: 84ad17b10f341ca81c599e5aadd7d13fce04cb42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24f9f0557fa24b518b7b957010c4de14db38c04ad4dd81d7f900ece3e783e577f37d2f8fe3226e9896f2409ed1cb92e7e760b078344308d887049e8cef64a890
|
7
|
+
data.tar.gz: 82ecce67fb2b23c3cb73d47a356de210ef5ebc6f72a03a3fa1108cc1e87e95e47826000965a8c96884fcb5ff2e6db6777acea7dc5dbebf6507a423e40e7dc14a
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -77,8 +77,8 @@ care when accessing other shared resources.
|
|
77
77
|
|
78
78
|
The consume block accepts the usual subscriptions headers, as well as two
|
79
79
|
additional headers `:dead_letter_queue` and `:max_redeliveries`. If either of
|
80
|
-
the latter two is present, the
|
81
|
-
the block returns `false`; after `:
|
80
|
+
the latter two is present, the consumer will unreceive any messages for which
|
81
|
+
the block returns `false`; after `:max_redeliveries`, it will send the message
|
82
82
|
to `:dead_letter_queue`. `consume` blocks without these headers will fail
|
83
83
|
silently rather than unreceive.
|
84
84
|
|
@@ -97,3 +97,10 @@ Or install it yourself as:
|
|
97
97
|
|
98
98
|
$ gem install stapfen
|
99
99
|
|
100
|
+
## Running Specs
|
101
|
+
|
102
|
+
Download this from jar from Maven Central
|
103
|
+
* [activemq-all-5.8.0.jar](http://search.maven.org/#artifactdetails%7Corg.apache.activemq%7Cactivemq-all%7C5.8.0%7Cjar)
|
104
|
+
* Put it in gem root
|
105
|
+
* ```rake spec```
|
106
|
+
|
@@ -0,0 +1,76 @@
|
|
1
|
+
begin
|
2
|
+
require 'hermann'
|
3
|
+
require 'hermann/consumer'
|
4
|
+
rescue LoadError => e
|
5
|
+
if RUBY_PLATFORM == 'java'
|
6
|
+
raise
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'stapfen/destination'
|
11
|
+
|
12
|
+
module Stapfen
|
13
|
+
module Client
|
14
|
+
class Kafka
|
15
|
+
attr_reader :connection, :producer
|
16
|
+
|
17
|
+
# Initialize a Kafka client object
|
18
|
+
#
|
19
|
+
# @params [Hash] configuration object
|
20
|
+
# @option configuration [String] :topic The kafka topic
|
21
|
+
# @option configuration [String] :groupId The kafka groupId
|
22
|
+
# @option configuration [String] :zookeepers List of zookeepers
|
23
|
+
#
|
24
|
+
# @raises [ConfigurationError] if required configs are not present
|
25
|
+
def initialize(configuration)
|
26
|
+
super()
|
27
|
+
@config = configuration
|
28
|
+
@topic = @config[:topic]
|
29
|
+
@groupId = @config[:groupId]
|
30
|
+
@zookeepers = @config[:zookeepers]
|
31
|
+
raise ConfigurationError unless @topic && @groupId && @zookeepers
|
32
|
+
@connection = Hermann::Consumer.new(@topic, @groupId, @zookeepers)
|
33
|
+
end
|
34
|
+
|
35
|
+
# This method is not implemenented
|
36
|
+
def connect(*args)
|
37
|
+
# No-op
|
38
|
+
end
|
39
|
+
|
40
|
+
# Cannot unreceive
|
41
|
+
def can_unreceive?
|
42
|
+
false
|
43
|
+
end
|
44
|
+
|
45
|
+
# Closes the consumer threads created by kafka.
|
46
|
+
#
|
47
|
+
# @return [Boolean] True/false depending on whether we actually closed
|
48
|
+
# the connection
|
49
|
+
def close
|
50
|
+
return false unless @connection
|
51
|
+
@connection.shutdown
|
52
|
+
@connection = nil
|
53
|
+
return true
|
54
|
+
end
|
55
|
+
|
56
|
+
# Subscribes to a destination (i.e. kafka topic) and consumes messages
|
57
|
+
#
|
58
|
+
# @params [Destination] source of messages to consume
|
59
|
+
#
|
60
|
+
# @params [Hash] Not used
|
61
|
+
#
|
62
|
+
# @params [block] block to yield consumed messages
|
63
|
+
def subscribe(destination, headers={}, &block)
|
64
|
+
destination = Stapfen::Destination.from_string(destination)
|
65
|
+
connection.consume(destination.as_kafka, &block)
|
66
|
+
end
|
67
|
+
|
68
|
+
def runloop
|
69
|
+
loop do
|
70
|
+
sleep 1
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/stapfen/destination.rb
CHANGED
data/lib/stapfen/message.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
-
|
2
1
|
module Stapfen
|
3
2
|
class Message
|
4
3
|
attr_reader :message_id, :body, :original, :destination
|
5
4
|
|
6
5
|
def initialize(opts={})
|
7
6
|
super()
|
8
|
-
@body
|
7
|
+
@body = opts[:body]
|
9
8
|
@destination = opts[:destination]
|
10
|
-
@message_id
|
11
|
-
@original
|
9
|
+
@message_id = opts[:message_id]
|
10
|
+
@original = opts[:original]
|
12
11
|
end
|
13
12
|
|
14
13
|
# Create an instance of {Stapfen::Message} from the passed in
|
@@ -42,5 +41,18 @@ module Stapfen
|
|
42
41
|
:message_id => message.jms_message_id,
|
43
42
|
:original => message)
|
44
43
|
end
|
44
|
+
|
45
|
+
# Create an instance of {Stapfen::Message} from the passed in
|
46
|
+
# +String+ which a Kafka consumer should receive
|
47
|
+
#
|
48
|
+
# @param [String] message
|
49
|
+
# @return [Stapfen::Message] A Stapfen wrapper object
|
50
|
+
def self.from_kafka(message)
|
51
|
+
unless message.kind_of? String
|
52
|
+
raise Stapfen::InvalidMessageError, message.inspect
|
53
|
+
end
|
54
|
+
|
55
|
+
return self.new(:body => message)
|
56
|
+
end
|
45
57
|
end
|
46
58
|
end
|
data/lib/stapfen/version.rb
CHANGED
data/lib/stapfen/worker.rb
CHANGED
@@ -47,12 +47,12 @@ module Stapfen
|
|
47
47
|
raise
|
48
48
|
end
|
49
49
|
|
50
|
-
@
|
50
|
+
@protocol = 'stomp'
|
51
51
|
return true
|
52
52
|
end
|
53
53
|
|
54
54
|
def self.stomp?
|
55
|
-
@
|
55
|
+
@protocol.nil? || @protocol == 'stomp'
|
56
56
|
end
|
57
57
|
|
58
58
|
# Force the worker to use JMS as the messaging protocol.
|
@@ -73,12 +73,38 @@ module Stapfen
|
|
73
73
|
raise
|
74
74
|
end
|
75
75
|
|
76
|
-
@
|
76
|
+
@protocol = 'jms'
|
77
77
|
return true
|
78
78
|
end
|
79
79
|
|
80
80
|
def self.jms?
|
81
|
-
|
81
|
+
@protocol == 'jms'
|
82
|
+
end
|
83
|
+
|
84
|
+
# Force the worker to use Kafka as the messaging protocol.
|
85
|
+
#
|
86
|
+
# *Note:* Only works under JRuby
|
87
|
+
#
|
88
|
+
# @return [Boolean]
|
89
|
+
def self.use_kafka!
|
90
|
+
unless RUBY_PLATFORM == 'java'
|
91
|
+
raise Stapfen::ConfigurationError, "You cannot use Kafka unless you're running under JRuby!"
|
92
|
+
end
|
93
|
+
|
94
|
+
begin
|
95
|
+
require 'java'
|
96
|
+
require 'hermann'
|
97
|
+
rescue LoadError
|
98
|
+
puts "You need the `hermann` gem to be installed to use Kafka!"
|
99
|
+
raise
|
100
|
+
end
|
101
|
+
|
102
|
+
@protocol = 'kafka'
|
103
|
+
return true
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.kafka?
|
107
|
+
@protocol == 'kafka'
|
82
108
|
end
|
83
109
|
|
84
110
|
# Optional method, should be passed a block which will yield a {{Logger}}
|
@@ -164,6 +190,9 @@ module Stapfen
|
|
164
190
|
elsif self.class.jms?
|
165
191
|
require 'stapfen/client/jms'
|
166
192
|
@client = Stapfen::Client::JMS.new(self.class.configuration.call)
|
193
|
+
elsif self.class.kafka?
|
194
|
+
require 'stapfen/client/kafka'
|
195
|
+
@client = Stapfen::Client::Kafka.new(self.class.configuration.call)
|
167
196
|
end
|
168
197
|
|
169
198
|
debug("Running with #{@client} inside of Thread:#{Thread.current.inspect}")
|
@@ -192,6 +221,10 @@ module Stapfen
|
|
192
221
|
message = Stapfen::Message.from_jms(m)
|
193
222
|
end
|
194
223
|
|
224
|
+
if self.class.kafka?
|
225
|
+
message = Stapfen::Message.from_kafka(m)
|
226
|
+
end
|
227
|
+
|
195
228
|
success = self.send(method_name, message)
|
196
229
|
|
197
230
|
unless success
|
data/lib/stapfen.rb
CHANGED
data/spec/client/jms_spec.rb
CHANGED
@@ -12,7 +12,7 @@ if RUBY_PLATFORM == 'java'
|
|
12
12
|
describe '#can_unreceive?' do
|
13
13
|
subject { client.can_unreceive? }
|
14
14
|
|
15
|
-
it { should
|
15
|
+
it { should be true }
|
16
16
|
end
|
17
17
|
|
18
18
|
describe '#unreceive' do
|
@@ -158,11 +158,11 @@ if RUBY_PLATFORM == 'java'
|
|
158
158
|
client.stub(:connection).and_return(double('JMS::Connection'))
|
159
159
|
end
|
160
160
|
|
161
|
-
it { should
|
161
|
+
it { should be false }
|
162
162
|
end
|
163
163
|
|
164
164
|
context 'without a connection' do
|
165
|
-
it { should
|
165
|
+
it { should be true }
|
166
166
|
end
|
167
167
|
end
|
168
168
|
|
@@ -177,7 +177,7 @@ if RUBY_PLATFORM == 'java'
|
|
177
177
|
context 'without an existing session' do
|
178
178
|
it 'should close the client' do
|
179
179
|
connection.should_receive(:close)
|
180
|
-
expect(result).to
|
180
|
+
expect(result).to be true
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
@@ -191,7 +191,7 @@ if RUBY_PLATFORM == 'java'
|
|
191
191
|
it 'should close the client and session' do
|
192
192
|
session.should_receive(:close)
|
193
193
|
connection.should_receive(:close)
|
194
|
-
expect(result).to
|
194
|
+
expect(result).to be true
|
195
195
|
end
|
196
196
|
end
|
197
197
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'stapfen/client/kafka'
|
4
|
+
|
5
|
+
describe Stapfen::Client::Kafka, :java => true do
|
6
|
+
let(:config) { { :topic => 'test', :groupId => 'groupId', :zookeepers => 'foo' } }
|
7
|
+
let(:consumer) { double('Hermann::Consumer') }
|
8
|
+
|
9
|
+
subject(:client) { described_class.new(config) }
|
10
|
+
|
11
|
+
before do
|
12
|
+
allow(Hermann::Consumer).to receive(:new) { consumer }
|
13
|
+
end
|
14
|
+
|
15
|
+
it { should respond_to :connect }
|
16
|
+
|
17
|
+
describe '#can_unreceive?' do
|
18
|
+
subject { client.can_unreceive? }
|
19
|
+
it { should be false }
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#close' do
|
23
|
+
subject(:result) { client.close }
|
24
|
+
|
25
|
+
context 'with a connection' do
|
26
|
+
it 'should close the client' do
|
27
|
+
allow(consumer).to receive(:shutdown)
|
28
|
+
expect(result).to be true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
context 'without a connection' do
|
32
|
+
it 'returns false' do
|
33
|
+
expect(Hermann::Consumer).to receive(:new) { nil }
|
34
|
+
expect(consumer).to_not receive(:shutdown)
|
35
|
+
expect(result).to be false
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#subscribe' do
|
41
|
+
let(:topic) { 'topic' }
|
42
|
+
let(:destination) { double('Destination') }
|
43
|
+
let(:msg) { 'foo' }
|
44
|
+
it 'yields to the block and passes in consumed message' do
|
45
|
+
allow(destination).to receive(:as_kafka) { topic }
|
46
|
+
allow(Stapfen::Destination).to receive(:from_string) { destination }
|
47
|
+
allow(consumer).to receive(:consume).with(topic).and_yield(msg)
|
48
|
+
|
49
|
+
expect{ |b|
|
50
|
+
client.subscribe(destination, nil, &b)
|
51
|
+
}.to yield_with_args(msg)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/spec/destination_spec.rb
CHANGED
@@ -5,6 +5,19 @@ describe Stapfen::Destination do
|
|
5
5
|
it { should respond_to :name }
|
6
6
|
it { should respond_to :type }
|
7
7
|
|
8
|
+
describe '#as_kafka' do
|
9
|
+
let(:name) { 'topic' }
|
10
|
+
subject(:destination) do
|
11
|
+
d = described_class.new
|
12
|
+
d.type = :topic
|
13
|
+
d.name = name
|
14
|
+
d.as_kafka
|
15
|
+
end
|
16
|
+
|
17
|
+
it { should be_instance_of String }
|
18
|
+
it { should eql "topic" }
|
19
|
+
end
|
20
|
+
|
8
21
|
describe '#as_jms' do
|
9
22
|
let(:name) { 'rspec/dlq' }
|
10
23
|
subject(:destination) do
|
data/spec/logger_spec.rb
CHANGED
@@ -21,7 +21,7 @@ describe Stapfen::Logger do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'should discard info messages' do
|
24
|
-
expect(logger.info('rspec')).to
|
24
|
+
expect(logger.info('rspec')).to be false
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -34,8 +34,7 @@ describe Stapfen::Logger do
|
|
34
34
|
|
35
35
|
it 'should pass info messages along' do
|
36
36
|
plogger.should_receive(:info)
|
37
|
-
|
38
|
-
expect(logger.info('rspec')).to be_true
|
37
|
+
expect(logger.info('rspec')).to be true
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '../lib'))
|
2
2
|
|
3
3
|
require 'stapfen'
|
4
|
-
|
4
|
+
require 'rspec/its'
|
5
5
|
|
6
6
|
is_java = (RUBY_PLATFORM == 'java')
|
7
7
|
|
@@ -12,6 +12,9 @@ end
|
|
12
12
|
|
13
13
|
|
14
14
|
RSpec.configure do |c|
|
15
|
+
c.color = true
|
16
|
+
c.order = "random"
|
17
|
+
|
15
18
|
unless is_java
|
16
19
|
c.filter_run_excluding :java => true
|
17
20
|
end
|
data/spec/worker_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe Stapfen::Worker do
|
|
17
17
|
subject(:result) { worker.use_stomp! }
|
18
18
|
|
19
19
|
it 'should update the instance variable' do
|
20
|
-
expect(result).to
|
20
|
+
expect(result).to be true
|
21
21
|
expect(worker).to be_stomp
|
22
22
|
expect(worker).not_to be_jms
|
23
23
|
end
|
@@ -32,7 +32,7 @@ describe Stapfen::Worker do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'should update the instance variable' do
|
35
|
-
expect(result).to
|
35
|
+
expect(result).to be true
|
36
36
|
expect(worker).to be_jms
|
37
37
|
expect(worker).not_to be_stomp
|
38
38
|
end
|
@@ -55,6 +55,7 @@ describe Stapfen::Worker do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
describe '#configure' do
|
58
|
+
let(:config) { {:valid => true} }
|
58
59
|
it 'should error when not passed a block' do
|
59
60
|
expect {
|
60
61
|
worker.configure
|
@@ -62,21 +63,26 @@ describe Stapfen::Worker do
|
|
62
63
|
end
|
63
64
|
|
64
65
|
it 'should save the return value from the block' do
|
65
|
-
config = {:valid => true}
|
66
|
-
|
67
66
|
worker.configure do
|
68
67
|
config
|
69
68
|
end
|
70
|
-
|
71
69
|
expect(worker.configuration.call).to eql(config)
|
72
70
|
end
|
73
71
|
end
|
74
72
|
|
75
|
-
describe '#exit_cleanly' do
|
73
|
+
describe '#exit_cleanly', :java => true do
|
76
74
|
subject(:result) { worker.exit_cleanly }
|
77
75
|
|
76
|
+
before do
|
77
|
+
allow(Java::JavaLang::System).to receive(:exit).with(0)
|
78
|
+
end
|
79
|
+
|
80
|
+
after do
|
81
|
+
worker.class_variable_set(:@@workers, [])
|
82
|
+
end
|
83
|
+
|
78
84
|
context 'with no worker classes' do
|
79
|
-
it { should
|
85
|
+
it { should be false }
|
80
86
|
end
|
81
87
|
|
82
88
|
context 'with a single worker class' do
|
@@ -88,12 +94,12 @@ describe Stapfen::Worker do
|
|
88
94
|
|
89
95
|
it "should execute the worker's #exit_cleanly method" do
|
90
96
|
w.should_receive(:exit_cleanly)
|
91
|
-
expect(result).to
|
97
|
+
expect(result).to be true
|
92
98
|
end
|
93
99
|
|
94
100
|
it "should return false if the worker's #exit_cleanly method" do
|
95
101
|
w.should_receive(:exit_cleanly).and_raise(StandardError)
|
96
|
-
expect(result).to
|
102
|
+
expect(result).to be false
|
97
103
|
end
|
98
104
|
end
|
99
105
|
|
@@ -101,14 +107,14 @@ describe Stapfen::Worker do
|
|
101
107
|
let(:w1) { double('Fake Worker 1') }
|
102
108
|
let(:w2) { double('Fake Worker 2') }
|
103
109
|
|
104
|
-
before
|
110
|
+
before do
|
105
111
|
worker.class_variable_set(:@@workers, [w1, w2])
|
106
112
|
end
|
107
113
|
|
108
114
|
it 'should invoke both #exit_cleanly methods' do
|
109
|
-
w1.
|
110
|
-
w2.
|
111
|
-
expect(
|
115
|
+
expect(w1).to receive(:exit_cleanly)
|
116
|
+
expect(w2).to receive(:exit_cleanly)
|
117
|
+
expect(worker.exit_cleanly).to be true
|
112
118
|
end
|
113
119
|
end
|
114
120
|
end
|
@@ -125,6 +131,10 @@ describe Stapfen::Worker do
|
|
125
131
|
context 'with just a queue name' do
|
126
132
|
let(:name) { 'jms.queue.lol' }
|
127
133
|
|
134
|
+
before do
|
135
|
+
worker.instance_variable_set(:@consumers, [])
|
136
|
+
end
|
137
|
+
|
128
138
|
it 'should add an entry for the queue name' do
|
129
139
|
worker.consume(name) do |msg|
|
130
140
|
nil
|
@@ -163,6 +173,16 @@ describe Stapfen::Worker do
|
|
163
173
|
client.stub(:subscribe) do |name, headers, &block|
|
164
174
|
block.call(message)
|
165
175
|
end
|
176
|
+
|
177
|
+
config = {:valid => true}
|
178
|
+
|
179
|
+
worker.configure do
|
180
|
+
config
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
after do
|
185
|
+
worker.class_variable_set(:@@workers, [])
|
166
186
|
end
|
167
187
|
|
168
188
|
context 'with just a queue name' do
|
@@ -189,6 +209,7 @@ describe Stapfen::Worker do
|
|
189
209
|
{ :dead_letter_queue => '/queue/foo',
|
190
210
|
:max_redeliveries => 3 }
|
191
211
|
end
|
212
|
+
|
192
213
|
let(:raw_headers) { unrec_headers.merge(:other_header => 'foo!') }
|
193
214
|
context 'on a failed message' do
|
194
215
|
it 'should unreceive' do
|
data/stapfen.gemspec
CHANGED
@@ -3,17 +3,22 @@ lib = File.expand_path('../lib', __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
require 'stapfen/version'
|
5
5
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "stapfen"
|
8
|
+
s.version = Stapfen::VERSION
|
9
|
+
s.authors = ["R. Tyler Croy"]
|
10
|
+
s.email = ["rtyler.croy@lookout.com"]
|
11
|
+
s.description = "A simple gem for writing good basic STOMP workers"
|
12
|
+
s.summary = "A simple gem for writing good basic STOMP workers"
|
13
|
+
s.homepage = ""
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
s.files = `git ls-files`.split($/)
|
16
|
+
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
if RUBY_PLATFORM == "java"
|
21
|
+
s.add_dependency 'hermann', "~> 0.20.0"
|
22
|
+
s.platform = 'java'
|
23
|
+
end
|
19
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stapfen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- R. Tyler Croy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-11-03 00:00:00 Z
|
13
13
|
dependencies: []
|
14
14
|
|
15
15
|
description: A simple gem for writing good basic STOMP workers
|
@@ -32,6 +32,7 @@ files:
|
|
32
32
|
- lib/stapfen.rb
|
33
33
|
- lib/stapfen/client.rb
|
34
34
|
- lib/stapfen/client/jms.rb
|
35
|
+
- lib/stapfen/client/kafka.rb
|
35
36
|
- lib/stapfen/client/stomp.rb
|
36
37
|
- lib/stapfen/destination.rb
|
37
38
|
- lib/stapfen/logger.rb
|
@@ -39,6 +40,7 @@ files:
|
|
39
40
|
- lib/stapfen/version.rb
|
40
41
|
- lib/stapfen/worker.rb
|
41
42
|
- spec/client/jms_spec.rb
|
43
|
+
- spec/client/kafka_spec.rb
|
42
44
|
- spec/client/stomp_spec.rb
|
43
45
|
- spec/client_spec.rb
|
44
46
|
- spec/destination_spec.rb
|
@@ -69,12 +71,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
71
|
requirements: []
|
70
72
|
|
71
73
|
rubyforge_project:
|
72
|
-
rubygems_version: 2.
|
74
|
+
rubygems_version: 2.4.1
|
73
75
|
signing_key:
|
74
76
|
specification_version: 4
|
75
77
|
summary: A simple gem for writing good basic STOMP workers
|
76
78
|
test_files:
|
77
79
|
- spec/client/jms_spec.rb
|
80
|
+
- spec/client/kafka_spec.rb
|
78
81
|
- spec/client/stomp_spec.rb
|
79
82
|
- spec/client_spec.rb
|
80
83
|
- spec/destination_spec.rb
|