stapfen 2.1.0 → 2.1.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.
- checksums.yaml +7 -15
- data/examples/simple.rb +21 -8
- data/lib/stapfen/client/jms.rb +5 -11
- data/lib/stapfen/version.rb +1 -1
- data/spec/client/jms_spec.rb +12 -22
- metadata +29 -21
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZTU4OTgyZmFkY2EyZTAwYmEyNDQxMWI3NjhkOTNiNTA0MGIwOWM2ZDM5NzY3
|
10
|
-
NTQ4ZDVlYTAxYWM1YWJjOTQxYzIwNWI1Zjk4OGFjN2ZlN2QwMTAxZGEzYzMz
|
11
|
-
M2YwNDdiMWQwODkzMmEyOWMwM2M3OTQyMDVkNzEyNDY1NDZjOWE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NjNhOTRiNjcwMWY4YjRkNThhOWJkYzM4ZTZmZDAzNTA5NjQ4YmQzOGEzYjJl
|
14
|
-
YmJiMGE4MDZmMGJjMmQ1MDYyNDVlODA2ZDQxZWIwMzVmOWE1YTA4ZTMxYmY4
|
15
|
-
NDg0OTc0ZjlmZmU2ZGM5MjAwNjhlYzFhYTM1NTk1ZmNiZDM2YzU=
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 19bdf4344cf49d95cee8597de1902b9a814a1b90
|
4
|
+
data.tar.gz: 06ad77a4f72ea1cce8269e92a19ce2cf6872474b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 09b0dfd450a6e4387250b0d0c4b49734891ea5f07db900b7cdb33412b731352b5cd0a192663b898e383030c2938710f29238716b0b793d181adbed35157155aa
|
7
|
+
data.tar.gz: 79104895c26a380204fe1cddbe0304e255e87d522ada0c1c38fe7dad16457b10d9bec4bdb82cd44b55f21bd21ecc09cba1ec8b8abc2287cf2a23663f23ed10b3
|
data/examples/simple.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
|
2
2
|
require 'stapfen'
|
3
|
+
require ENV['activemq_jar'] if ENV['USE_JMS']
|
3
4
|
|
4
5
|
|
5
6
|
class Worker < Stapfen::Worker
|
@@ -13,19 +14,31 @@ class Worker < Stapfen::Worker
|
|
13
14
|
:passcode => 'guest',
|
14
15
|
:ssl => false
|
15
16
|
}
|
16
|
-
]
|
17
|
+
],
|
18
|
+
:factory => 'org.apache.activemq.ActiveMQConnectionFactory'}
|
17
19
|
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
21
|
+
use_jms! if ENV['USE_JMS']
|
22
|
+
|
23
|
+
if ENV['USE_JMS']
|
24
|
+
consume '/queue/jms.queue.test',
|
25
|
+
:max_redeliveries => 3,
|
26
|
+
:dead_letter_queue => '/queue/jms.queue.test/dlq' do |message|
|
27
|
+
puts "received: #{message}"
|
22
28
|
|
23
|
-
|
24
|
-
|
25
|
-
|
29
|
+
# False here forces an unreceive
|
30
|
+
return false
|
31
|
+
end
|
32
|
+
else # use stomp
|
33
|
+
consume '/queue/test',
|
34
|
+
:max_redeliveries => 3,
|
35
|
+
:dead_letter_queue => '/queue/test/dlq' do |message|
|
36
|
+
puts "received: #{message}"
|
37
|
+
|
38
|
+
# False here forces an unreceive
|
39
|
+
return false
|
26
40
|
end
|
27
41
|
end
|
28
42
|
end
|
29
43
|
|
30
|
-
|
31
44
|
Worker.run!
|
data/lib/stapfen/client/jms.rb
CHANGED
@@ -103,20 +103,14 @@ module Stapfen
|
|
103
103
|
def unreceive(message, unreceive_headers)
|
104
104
|
return if unreceive_headers[:max_redeliveries].nil? && unreceive_headers[:max_redeliveries].nil?
|
105
105
|
|
106
|
-
|
107
|
-
retry_count =
|
108
|
-
retry_count +=
|
109
|
-
headers['retry_count'] = retry_count
|
110
|
-
|
111
|
-
destination = headers.delete('destination')
|
106
|
+
destination = message.destination.to_s.sub('queue://','/queue/').sub('topic://','/topic')
|
107
|
+
retry_count = message.getStringProperty('retry_count').to_i || 0
|
108
|
+
retry_count +=1
|
112
109
|
|
113
110
|
if unreceive_headers[:max_redeliveries] && (retry_count <= unreceive_headers[:max_redeliveries])
|
114
|
-
self.publish(destination, message.
|
111
|
+
self.publish(destination, message.data, {'retry_count' => retry_count.to_s})
|
115
112
|
elsif unreceive_headers[:dead_letter_queue] # Done retrying, send to DLQ
|
116
|
-
|
117
|
-
headers.delete('retry_count')
|
118
|
-
|
119
|
-
self.publish(unreceive_headers[:dead_letter_queue], message.body, headers)
|
113
|
+
self.publish(unreceive_headers[:dead_letter_queue], message.data, {:original_destination => destination})
|
120
114
|
end
|
121
115
|
end
|
122
116
|
end
|
data/lib/stapfen/version.rb
CHANGED
data/spec/client/jms_spec.rb
CHANGED
@@ -17,7 +17,7 @@ if RUBY_PLATFORM == 'java'
|
|
17
17
|
|
18
18
|
describe '#unreceive' do
|
19
19
|
let(:body) { 'Some body in string form' }
|
20
|
-
let(:message) { double('Message', :
|
20
|
+
let(:message) { double('Message', :destination => orig_destination, :data => body, :getStringProperty => nil) }
|
21
21
|
let(:max_redeliveries) { 2 }
|
22
22
|
let(:dlq) { '/queue/some_queue/dlq' }
|
23
23
|
let(:unreceive_headers) do
|
@@ -25,16 +25,9 @@ if RUBY_PLATFORM == 'java'
|
|
25
25
|
end
|
26
26
|
let(:orig_destination) { '/queue/some_queue' }
|
27
27
|
|
28
|
-
# Just to make sure we preserve any headers we don't explicitly get rid of
|
29
|
-
let(:orig_headers) do
|
30
|
-
{ 'key1' => 'value1' }
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
28
|
subject(:unreceive!) { client.unreceive(message, unreceive_headers) }
|
35
29
|
|
36
30
|
context 'with no unreceive[:max_redeliveries] or unreceive[:dead_letter_queue]' do
|
37
|
-
let(:msg_headers) { orig_headers }
|
38
31
|
let(:unreceive_headers) { Hash.new }
|
39
32
|
|
40
33
|
it 'should not resend the message' do
|
@@ -45,13 +38,15 @@ if RUBY_PLATFORM == 'java'
|
|
45
38
|
end
|
46
39
|
|
47
40
|
context 'On a message with no retry_count in the headers' do
|
48
|
-
|
41
|
+
before :each do
|
42
|
+
message.stub(:getStringProperty).with('retry_count').and_return(nil)
|
43
|
+
end
|
49
44
|
|
50
45
|
it 'should publish it to the same destination with a retry_count of 1' do
|
51
46
|
client.should_receive(:publish) do |dest, the_body, the_headers|
|
52
47
|
expect(dest).to eql orig_destination
|
53
48
|
expect(the_body).to eql body
|
54
|
-
expect(the_headers).to eql
|
49
|
+
expect(the_headers).to eql({'retry_count' => '1'})
|
55
50
|
end
|
56
51
|
|
57
52
|
unreceive!
|
@@ -59,7 +54,10 @@ if RUBY_PLATFORM == 'java'
|
|
59
54
|
end
|
60
55
|
|
61
56
|
context 'On a message with a retry_count in the headers' do
|
62
|
-
|
57
|
+
before :each do
|
58
|
+
message.stub(:getStringProperty).with('retry_count').and_return(retry_count)
|
59
|
+
end
|
60
|
+
|
63
61
|
|
64
62
|
context 'that is less than max_redeliveries' do
|
65
63
|
let(:retry_count) { max_redeliveries - 1 }
|
@@ -70,7 +68,7 @@ if RUBY_PLATFORM == 'java'
|
|
70
68
|
expect(the_body).to eql body
|
71
69
|
|
72
70
|
|
73
|
-
expect(the_headers).to eql
|
71
|
+
expect(the_headers).to eql({'retry_count' => (retry_count + 1).to_s})
|
74
72
|
end
|
75
73
|
|
76
74
|
unreceive!
|
@@ -86,11 +84,7 @@ if RUBY_PLATFORM == 'java'
|
|
86
84
|
expect(the_body).to eql body
|
87
85
|
expect(dest).to eql dlq
|
88
86
|
|
89
|
-
|
90
|
-
# and original_destination
|
91
|
-
msg_headers.delete('retry_count')
|
92
|
-
msg_headers['original_destination'] = orig_destination
|
93
|
-
expect(the_headers).to eql msg_headers
|
87
|
+
expect(the_headers).to eql({:original_destination => orig_destination})
|
94
88
|
end
|
95
89
|
|
96
90
|
unreceive!
|
@@ -105,11 +99,7 @@ if RUBY_PLATFORM == 'java'
|
|
105
99
|
expect(the_body).to eql body
|
106
100
|
expect(dest).to eql dlq
|
107
101
|
|
108
|
-
|
109
|
-
# and original_destination
|
110
|
-
msg_headers.delete('retry_count')
|
111
|
-
msg_headers['original_destination'] = orig_destination
|
112
|
-
expect(the_headers).to eql msg_headers
|
102
|
+
expect(the_headers).to eql({:original_destination => orig_destination})
|
113
103
|
end
|
114
104
|
|
115
105
|
unreceive!
|
metadata
CHANGED
@@ -1,22 +1,27 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: stapfen
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- R. Tyler Croy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
11
|
+
|
12
|
+
date: 2014-01-28 00:00:00 Z
|
12
13
|
dependencies: []
|
14
|
+
|
13
15
|
description: A simple gem for writing good basic STOMP workers
|
14
|
-
email:
|
16
|
+
email:
|
15
17
|
- rtyler.croy@lookout.com
|
16
18
|
executables: []
|
19
|
+
|
17
20
|
extensions: []
|
21
|
+
|
18
22
|
extra_rdoc_files: []
|
19
|
-
|
23
|
+
|
24
|
+
files:
|
20
25
|
- .gitignore
|
21
26
|
- CHANGES.md
|
22
27
|
- Gemfile
|
@@ -42,30 +47,33 @@ files:
|
|
42
47
|
- spec/spec_helper.rb
|
43
48
|
- spec/worker_spec.rb
|
44
49
|
- stapfen.gemspec
|
45
|
-
homepage:
|
50
|
+
homepage: ""
|
46
51
|
licenses: []
|
52
|
+
|
47
53
|
metadata: {}
|
54
|
+
|
48
55
|
post_install_message:
|
49
56
|
rdoc_options: []
|
50
|
-
|
57
|
+
|
58
|
+
require_paths:
|
51
59
|
- lib
|
52
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
-
|
55
|
-
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
version: '0'
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- &id001
|
63
|
+
- ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- *id001
|
62
69
|
requirements: []
|
70
|
+
|
63
71
|
rubyforge_project:
|
64
|
-
rubygems_version: 2.1
|
72
|
+
rubygems_version: 2.2.1
|
65
73
|
signing_key:
|
66
74
|
specification_version: 4
|
67
75
|
summary: A simple gem for writing good basic STOMP workers
|
68
|
-
test_files:
|
76
|
+
test_files:
|
69
77
|
- spec/client/jms_spec.rb
|
70
78
|
- spec/client/stomp_spec.rb
|
71
79
|
- spec/client_spec.rb
|