nebulous_stomp 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.hgtags +1 -0
- data/lib/nebulous_stomp/stomp_handler.rb +19 -13
- data/lib/nebulous_stomp/version.rb +1 -1
- data/nebulous.gemspec +3 -3
- data/spec/through_test_spec.rb +79 -0
- metadata +11 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 210d0ff5d3c99590ab6356e5456e2fa67e9ab0ae
|
4
|
+
data.tar.gz: ac6782c4ef1969f7f0854de505a393927487cd00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e12b2880dff2e61135575fcb2f694315621fcd8a69f29156e01eec0d1248b8f679241d1907bf75da452ec3bb6cf69152009e364ed9aeaa218b2735c929a7daf2
|
7
|
+
data.tar.gz: 2e5a0161b8c527dd8633562d1f359b781e105554a4c4d396c2dcba265f78750c0697051d0049cc9f26e6ef060b68cc97358d358e64a6caa1d0a64d3065922f92
|
data/.hgtags
CHANGED
@@ -2,12 +2,15 @@ require 'stomp'
|
|
2
2
|
require 'json'
|
3
3
|
require 'time'
|
4
4
|
|
5
|
-
|
6
5
|
module NebulousStomp
|
7
6
|
|
8
7
|
|
9
8
|
##
|
10
|
-
# A Class to deal with talking to STOMP via the Stomp gem
|
9
|
+
# A Class to deal with talking to STOMP via the Stomp gem.
|
10
|
+
#
|
11
|
+
# You will need to instantiate this yourself if you only want to listen for messages. But if you
|
12
|
+
# want to send a request and receive a response, you should never need this -- a NebRequest
|
13
|
+
# returns a Message.
|
11
14
|
#
|
12
15
|
class StompHandler
|
13
16
|
|
@@ -123,7 +126,7 @@ module NebulousStomp
|
|
123
126
|
return self unless nebulous_on?
|
124
127
|
NebulousStomp.logger.info(__FILE__) {"Connecting to STOMP"}
|
125
128
|
|
126
|
-
@client = @test_client || Stomp::Client.new( @stomp_hash
|
129
|
+
@client = @test_client || Stomp::Client.new( @stomp_hash )
|
127
130
|
raise ConnectionError, "Stomp Connection failed" unless connected?
|
128
131
|
|
129
132
|
conn = @client.connection_frame()
|
@@ -208,9 +211,6 @@ module NebulousStomp
|
|
208
211
|
# Ideally I'd like to DRY this and listen() up, but with this
|
209
212
|
# yield-within-a-thread stuff going on, I'm actually not sure how to do
|
210
213
|
# that safely.
|
211
|
-
#
|
212
|
-
# Actually i'm not even sure how to stop once I've read one message. The
|
213
|
-
# Stomp gem behaves very strangely.
|
214
214
|
#++
|
215
215
|
#
|
216
216
|
def listen_with_timeout(queue, timeout)
|
@@ -230,21 +230,24 @@ module NebulousStomp
|
|
230
230
|
@client.subscribe( queue, {ack: "client-individual"} ) do |msg|
|
231
231
|
|
232
232
|
begin
|
233
|
-
|
234
|
-
@client.ack(msg)
|
235
|
-
elsif done == false
|
233
|
+
unless msg.body == "boo"
|
236
234
|
yield Message.from_stomp(msg)
|
237
235
|
done = true
|
238
236
|
end
|
237
|
+
@client.ack(msg)
|
239
238
|
rescue =>e
|
240
239
|
NebulousStomp.logger.error(__FILE__) {"Error during polling: #{e}" }
|
241
240
|
end
|
242
241
|
|
243
|
-
|
242
|
+
if done
|
243
|
+
# Not that this seems to do any good when the Stomp gem is in play
|
244
|
+
resource.signal
|
245
|
+
break
|
246
|
+
end
|
244
247
|
|
245
|
-
#
|
246
|
-
resource.signal if done
|
248
|
+
end # of Stomp client subscribe block
|
247
249
|
|
250
|
+
resource.signal if done #or here. either, but.
|
248
251
|
end # of with_timeout
|
249
252
|
|
250
253
|
raise NebulousTimeout unless done
|
@@ -261,7 +264,10 @@ module NebulousStomp
|
|
261
264
|
&& mess.respond_to?(:headers_for_stomp)
|
262
265
|
|
263
266
|
stomp_connect unless @client
|
264
|
-
|
267
|
+
|
268
|
+
headers = mess.headers_for_stomp.reject{|k,v| v.nil? || v == "" }
|
269
|
+
@client.publish(queue, mess.body_for_stomp, headers)
|
270
|
+
|
265
271
|
mess
|
266
272
|
end
|
267
273
|
|
data/nebulous.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.requirements << 'Redis server (optional)'
|
29
29
|
|
30
30
|
spec.post_install_message = <<~MESSAGE
|
31
|
-
Nebulous has been installed ...sort of...
|
31
|
+
Nebulous has been installed ...sort of... ::waves arms noncomittedly::
|
32
32
|
MESSAGE
|
33
33
|
|
34
34
|
spec.add_development_dependency "bundler", "~> 1.11"
|
@@ -39,8 +39,8 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.add_development_dependency "pry-doc"
|
40
40
|
spec.add_development_dependency "ripper-tags"
|
41
41
|
|
42
|
-
spec.add_runtime_dependency 'stomp', '
|
43
|
-
spec.add_runtime_dependency 'redis', '
|
42
|
+
spec.add_runtime_dependency 'stomp', '~>1.4'
|
43
|
+
spec.add_runtime_dependency 'redis', '~>3.1'
|
44
44
|
spec.add_runtime_dependency 'devnull', '~>0.1'
|
45
45
|
|
46
46
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'nebulous_stomp'
|
2
|
+
|
3
|
+
|
4
|
+
##
|
5
|
+
# This is a through test against the JH development stomp server.
|
6
|
+
# It's really only here to double check that the Stomp gem hasn't moved the
|
7
|
+
# goalposts (again).
|
8
|
+
#
|
9
|
+
# In order for it to work, the JH RabbitMQ server has to be where we left it.
|
10
|
+
# So this test won't work for you out of the box, unless you are me.
|
11
|
+
#
|
12
|
+
describe 'through test' do
|
13
|
+
|
14
|
+
def connect_hash
|
15
|
+
host = { login: 'guest',
|
16
|
+
passcode: 'guest',
|
17
|
+
host: '10.0.0.150',
|
18
|
+
port: 61613,
|
19
|
+
ssl: false }
|
20
|
+
|
21
|
+
{hosts: [host], reliable: false}
|
22
|
+
end
|
23
|
+
|
24
|
+
def target_hash
|
25
|
+
{ sendQueue: "/queue/nebulous.test",
|
26
|
+
receiveQueue: "/queue/nebulous.test.response" }
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def init_stomp
|
31
|
+
NebulousStomp.init(stompConnectHash: connect_hash, messageTimeout: 5)
|
32
|
+
NebulousStomp.add_target(:target, target_hash)
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# a little method to receive a message and send one back, for testinng
|
37
|
+
# sending one.
|
38
|
+
#
|
39
|
+
def qna
|
40
|
+
Thread.new do
|
41
|
+
|
42
|
+
begin
|
43
|
+
sh = NebulousStomp::StompHandler.new(connect_hash)
|
44
|
+
sh.listen_with_timeout( target_hash[:sendQueue], 10 ) do |m|
|
45
|
+
sh.send_message( *m.respond_success )
|
46
|
+
end
|
47
|
+
ensure
|
48
|
+
sh.stomp_disconnect if sh
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
rescue
|
54
|
+
nil
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
let(:request) { NebulousStomp::NebRequest.new(:target, "ping") }
|
59
|
+
|
60
|
+
before do
|
61
|
+
init_stomp
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
it "sends a request" do
|
66
|
+
expect{ request.send_no_cache }.to raise_exception NebulousStomp::NebulousTimeout
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
it "receives a response" do
|
71
|
+
r = NebulousStomp::NebRequest.new(:target, "ping")
|
72
|
+
qna; response = r.send_no_cache
|
73
|
+
|
74
|
+
expect( response ).to be_a_kind_of NebulousStomp::Message
|
75
|
+
expect( response.verb ).to eq 'success'
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nebulous_stomp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Jones
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -112,28 +112,28 @@ dependencies:
|
|
112
112
|
name: stomp
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '1.
|
117
|
+
version: '1.4'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '1.
|
124
|
+
version: '1.4'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: redis
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '3.1'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '3.1'
|
139
139
|
- !ruby/object:Gem::Dependency
|
@@ -199,12 +199,13 @@ files:
|
|
199
199
|
- spec/spec_helper.rb
|
200
200
|
- spec/stomp_handler_null_spec.rb
|
201
201
|
- spec/stomp_handler_spec.rb
|
202
|
+
- spec/through_test_spec.rb
|
202
203
|
- tags
|
203
204
|
homepage: https://bitbucket.org/andy-twosticks/nebulous_stomp
|
204
205
|
licenses:
|
205
206
|
- MIT
|
206
207
|
metadata: {}
|
207
|
-
post_install_message: 'Nebulous has been installed ...sort of...
|
208
|
+
post_install_message: 'Nebulous has been installed ...sort of... ::waves arms noncomittedly::
|
208
209
|
|
209
210
|
'
|
210
211
|
rdoc_options: []
|
@@ -241,4 +242,5 @@ test_files:
|
|
241
242
|
- spec/spec_helper.rb
|
242
243
|
- spec/stomp_handler_null_spec.rb
|
243
244
|
- spec/stomp_handler_spec.rb
|
245
|
+
- spec/through_test_spec.rb
|
244
246
|
has_rdoc:
|