modern_times 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +24 -12
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/examples/README +4 -0
- data/examples/jms.yml +9 -0
- data/examples/requestor/README +4 -2
- data/examples/requestor/manager.rb +3 -2
- data/examples/requestor/request.rb +5 -4
- data/examples/requestor/reverse_echo_worker.rb +3 -2
- data/examples/simple/README +7 -4
- data/examples/simple/bar_worker.rb +4 -1
- data/examples/simple/baz_worker.rb +4 -3
- data/examples/simple/manager.rb +3 -2
- data/examples/simple/publish.rb +6 -5
- data/lib/modern_times.rb +20 -2
- data/lib/modern_times/base/supervisor.rb +14 -21
- data/lib/modern_times/base/supervisor_mbean.rb +4 -6
- data/lib/modern_times/base/worker.rb +17 -26
- data/lib/modern_times/jms.rb +23 -0
- data/lib/modern_times/{hornetq/client.rb → jms/connection.rb} +19 -12
- data/lib/modern_times/jms/publisher.rb +91 -0
- data/lib/modern_times/jms/supervisor.rb +19 -0
- data/lib/modern_times/jms/supervisor_mbean.rb +11 -0
- data/lib/modern_times/jms/worker.rb +166 -0
- data/lib/modern_times/jms_requestor.rb +10 -0
- data/lib/modern_times/jms_requestor/request_handle.rb +33 -0
- data/lib/modern_times/jms_requestor/requestor.rb +45 -0
- data/lib/modern_times/jms_requestor/supervisor.rb +45 -0
- data/lib/modern_times/jms_requestor/supervisor_mbean.rb +21 -0
- data/lib/modern_times/jms_requestor/worker.rb +78 -0
- data/lib/modern_times/manager.rb +14 -9
- data/lib/modern_times/manager_mbean.rb +14 -7
- data/lib/modern_times/marshal_strategy.rb +47 -0
- data/lib/modern_times/marshal_strategy/bson.rb +31 -0
- data/lib/modern_times/marshal_strategy/json.rb +30 -0
- data/lib/modern_times/marshal_strategy/ruby.rb +20 -0
- data/lib/modern_times/marshal_strategy/string.rb +19 -0
- data/lib/modern_times/railsable.rb +17 -74
- data/test/base_test.rb +248 -0
- data/test/jms.yml +8 -0
- data/test/jms_requestor_test.rb +263 -0
- data/test/jms_test.rb +296 -0
- data/test/marshal_strategy_test.rb +39 -0
- metadata +49 -46
- data/examples/requestor/hornetq.yml +0 -14
- data/examples/simple/hornetq.yml +0 -14
- data/lib/modern_times/hornetq.rb +0 -11
- data/lib/modern_times/hornetq/marshal_strategy.rb +0 -3
- data/lib/modern_times/hornetq/marshal_strategy/json.rb +0 -17
- data/lib/modern_times/hornetq/marshal_strategy/ruby.rb +0 -17
- data/lib/modern_times/hornetq/marshal_strategy/string.rb +0 -17
- data/lib/modern_times/hornetq/publisher.rb +0 -65
- data/lib/modern_times/hornetq/supervisor.rb +0 -22
- data/lib/modern_times/hornetq/supervisor_mbean.rb +0 -12
- data/lib/modern_times/hornetq/worker.rb +0 -127
- data/lib/modern_times/hornetq_requestor.rb +0 -9
- data/lib/modern_times/hornetq_requestor/request_handle.rb +0 -49
- data/lib/modern_times/hornetq_requestor/requestor.rb +0 -48
- data/lib/modern_times/hornetq_requestor/worker.rb +0 -29
- data/lib/modern_times/thread.rb +0 -16
- data/test/base/worker_test.rb +0 -38
- data/test/messaging/worker_manager_test.rb +0 -58
- data/test/messaging/worker_test.rb +0 -58
- data/test/worker_manager_test.rb +0 -48
data/test/jms_test.rb
ADDED
@@ -0,0 +1,296 @@
|
|
1
|
+
require 'modern_times'
|
2
|
+
require 'shoulda'
|
3
|
+
require 'test/unit'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'erb'
|
6
|
+
|
7
|
+
# NOTE: This test requires a running ActiveMQ server
|
8
|
+
|
9
|
+
module WorkerHelper
|
10
|
+
@@workers = {}
|
11
|
+
@@mutex = Mutex.new
|
12
|
+
def initialize(opts={})
|
13
|
+
super
|
14
|
+
@@mutex.synchronize do
|
15
|
+
@@workers[self.class.name] ||= []
|
16
|
+
@@workers[self.class.name] << self
|
17
|
+
end
|
18
|
+
@hash = Hash.new(0)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.workers(worker_klass)
|
22
|
+
@@workers[worker_klass.name]
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.reset_workers
|
26
|
+
@@workers = {}
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_message(i)
|
30
|
+
@hash[i] += 1
|
31
|
+
end
|
32
|
+
|
33
|
+
def message_count
|
34
|
+
puts "hash=#{@hash.inspect}"
|
35
|
+
@hash.values.reduce(:+)
|
36
|
+
end
|
37
|
+
|
38
|
+
def messages
|
39
|
+
@hash.keys
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module HashTest
|
44
|
+
module ModuleMethods
|
45
|
+
def create_obj(i)
|
46
|
+
{
|
47
|
+
'foo' => 1,
|
48
|
+
'bar' => {
|
49
|
+
'message' => i,
|
50
|
+
'dummy' => "Message #{i}"
|
51
|
+
},
|
52
|
+
# Only YAML will maintain symbols
|
53
|
+
:zulu => :rugger
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.included(base)
|
59
|
+
base.extend(ModuleMethods)
|
60
|
+
end
|
61
|
+
|
62
|
+
def perform(obj)
|
63
|
+
add_message(obj['bar']['message'])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
module BSONTest
|
68
|
+
extend ModernTimes::MarshalStrategy::BSON
|
69
|
+
include HashTest
|
70
|
+
end
|
71
|
+
|
72
|
+
module JSONTest
|
73
|
+
extend ModernTimes::MarshalStrategy::JSON
|
74
|
+
include HashTest
|
75
|
+
end
|
76
|
+
|
77
|
+
module RubyTest
|
78
|
+
extend ModernTimes::MarshalStrategy::Ruby
|
79
|
+
|
80
|
+
class MyClass
|
81
|
+
attr_reader :i
|
82
|
+
def initialize(i)
|
83
|
+
@i = i
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.create_obj(i)
|
88
|
+
MyClass.new(i)
|
89
|
+
end
|
90
|
+
|
91
|
+
def perform(obj)
|
92
|
+
add_message(obj.i)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
module StringTest
|
97
|
+
extend ModernTimes::MarshalStrategy::String
|
98
|
+
|
99
|
+
def self.create_obj(i)
|
100
|
+
"Message #{i}"
|
101
|
+
end
|
102
|
+
|
103
|
+
def perform(str)
|
104
|
+
if str =~ /^Message (\d+)$/
|
105
|
+
add_message($1.to_i)
|
106
|
+
else
|
107
|
+
raise "Unknown message: #{str}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
class DefaultWorker
|
113
|
+
include ModernTimes::JMS::Worker
|
114
|
+
include WorkerHelper
|
115
|
+
end
|
116
|
+
|
117
|
+
module Dummy
|
118
|
+
class DefaultWorker
|
119
|
+
include ModernTimes::JMS::Worker
|
120
|
+
include WorkerHelper
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
class SpecifiedQueueWorker
|
125
|
+
include ModernTimes::JMS::Worker
|
126
|
+
queue 'MyQueueName'
|
127
|
+
include WorkerHelper
|
128
|
+
end
|
129
|
+
|
130
|
+
class SpecifiedQueue2Worker
|
131
|
+
include ModernTimes::JMS::Worker
|
132
|
+
queue 'MyQueueName'
|
133
|
+
include WorkerHelper
|
134
|
+
end
|
135
|
+
|
136
|
+
class SpecifiedTopicWorker
|
137
|
+
include ModernTimes::JMS::Worker
|
138
|
+
virtual_topic 'MyTopicName'
|
139
|
+
include WorkerHelper
|
140
|
+
end
|
141
|
+
|
142
|
+
class SpecifiedTopic2Worker
|
143
|
+
include ModernTimes::JMS::Worker
|
144
|
+
virtual_topic 'MyTopicName'
|
145
|
+
include WorkerHelper
|
146
|
+
end
|
147
|
+
|
148
|
+
class JMSTest < Test::Unit::TestCase
|
149
|
+
|
150
|
+
@@server = JMX.simple_server
|
151
|
+
@@client = JMX.connect
|
152
|
+
|
153
|
+
def publish(marshal_module, range, options)
|
154
|
+
publisher = ModernTimes::JMS::Publisher.new(options.merge(:marshal => marshal_module))
|
155
|
+
puts "Publishing #{range} to #{publisher}"
|
156
|
+
range.each do |i|
|
157
|
+
obj = marshal_module.create_obj(i)
|
158
|
+
publisher.publish(obj)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def assert_worker(domain, worker_klasses, mbean_names, worker_count, range, min, max, instance_count)
|
163
|
+
puts "Checking #{worker_klasses.inspect}"
|
164
|
+
worker_klasses = [worker_klasses] unless worker_klasses.kind_of?(Array)
|
165
|
+
mbean_names = [mbean_names] unless mbean_names.kind_of?(Array)
|
166
|
+
workers = []
|
167
|
+
worker_klasses.each {|klass| workers.concat(WorkerHelper.workers(klass))}
|
168
|
+
|
169
|
+
assert_equal worker_count, workers.size
|
170
|
+
all_messages = []
|
171
|
+
workers.each do |worker|
|
172
|
+
msg_count = worker.message_count
|
173
|
+
assert msg_count >= min, "#{msg_count} is not between #{min} and #{max}"
|
174
|
+
assert msg_count <= max, "#{msg_count} is not between #{min} and #{max}"
|
175
|
+
# Make sure no duplicate messages
|
176
|
+
assert msg_count == worker.messages.size, "#{msg_count} is not == #{worker.messages.size}"
|
177
|
+
all_messages.concat(worker.messages)
|
178
|
+
end
|
179
|
+
all_messages.sort!
|
180
|
+
assert_equal all_messages, (range.to_a*instance_count).sort
|
181
|
+
|
182
|
+
if domain
|
183
|
+
total_count = 0
|
184
|
+
mbean_names.each do |mbean_name|
|
185
|
+
bean = @@client[ModernTimes.supervisor_mbean_object_name(domain, mbean_name)]
|
186
|
+
bean.message_counts.each do |msg_count|
|
187
|
+
total_count += msg_count
|
188
|
+
assert msg_count >= min, "#{msg_count} is not between #{min} and #{max}"
|
189
|
+
assert msg_count <= max, "#{msg_count} is not between #{min} and #{max}"
|
190
|
+
end
|
191
|
+
end
|
192
|
+
assert_equal all_messages.size, total_count
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context 'jms' do
|
197
|
+
setup do
|
198
|
+
config = YAML.load(ERB.new(File.read(File.join(File.dirname(__FILE__), 'jms.yml'))).result(binding))
|
199
|
+
ModernTimes::JMS::Connection.init(config)
|
200
|
+
end
|
201
|
+
|
202
|
+
teardown do
|
203
|
+
end
|
204
|
+
|
205
|
+
#[BSONTest, JSONTest, RubyTest, StringTest].each do |marshal_module|
|
206
|
+
[BSONTest, JSONTest, StringTest].each do |marshal_module|
|
207
|
+
marshal_module.name =~ /(.*)Test/
|
208
|
+
marshal_type = $1
|
209
|
+
|
210
|
+
context "marshaling with #{marshal_type}" do
|
211
|
+
setup do
|
212
|
+
@domain = "Uniquize_#{marshal_module.name}"
|
213
|
+
@manager = ModernTimes::Manager.new(:domain => @domain)
|
214
|
+
end
|
215
|
+
|
216
|
+
teardown do
|
217
|
+
if @manager
|
218
|
+
@manager.stop
|
219
|
+
@manager.join
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
should "operate on queues and topics" do
|
224
|
+
WorkerHelper.reset_workers
|
225
|
+
[DefaultWorker, Dummy::DefaultWorker, SpecifiedQueueWorker, SpecifiedQueue2Worker, SpecifiedTopicWorker, SpecifiedTopic2Worker].each do |worker_klass|
|
226
|
+
worker_klass.send(:include, marshal_module)
|
227
|
+
worker_klass.send(:marshal, marshal_module)
|
228
|
+
end
|
229
|
+
@manager.add(DefaultWorker, 3)
|
230
|
+
@manager.add(DefaultWorker, 2, :name => 'DefaultClone')
|
231
|
+
@manager.add(Dummy::DefaultWorker, 4)
|
232
|
+
@manager.add(SpecifiedQueueWorker, 3)
|
233
|
+
@manager.add(SpecifiedQueueWorker, 2, :name => 'SpecifiedQueueClone')
|
234
|
+
@manager.add(SpecifiedQueue2Worker, 2)
|
235
|
+
@manager.add(SpecifiedTopicWorker, 3)
|
236
|
+
@manager.add(SpecifiedTopicWorker, 2, :name => 'SpecifiedTopicClone')
|
237
|
+
@manager.add(SpecifiedTopic2Worker, 2)
|
238
|
+
|
239
|
+
sleep 1
|
240
|
+
|
241
|
+
publish(marshal_module, 100..199, :queue_name => 'Default')
|
242
|
+
publish(marshal_module, 200..299, :queue_name => 'Dummy_Default')
|
243
|
+
publish(marshal_module, 300..499, :queue_name => 'MyQueueName')
|
244
|
+
publish(marshal_module, 500..599, :virtual_topic_name => 'MyTopicName')
|
245
|
+
|
246
|
+
# Let the workers do their thing
|
247
|
+
sleep 5
|
248
|
+
|
249
|
+
# DefaultWorker should have 5 instances running with each worker handling between 10-30 messages in the range 100.199
|
250
|
+
assert_worker(@domain, DefaultWorker, ['Default', 'DefaultClone'], 5, 100..199, 10, 30, 1)
|
251
|
+
assert_worker(@domain, Dummy::DefaultWorker, 'Dummy_Default', 4, 200..299, 15, 35, 1)
|
252
|
+
assert_worker(@domain, [SpecifiedQueueWorker,SpecifiedQueue2Worker], ['SpecifiedQueue', 'SpecifiedQueueClone', 'SpecifiedQueue2'], 7, 300..499, 20, 40, 1)
|
253
|
+
assert_worker(@domain, SpecifiedTopicWorker, ['SpecifiedTopic', 'SpecifiedTopicClone'], 5, 500..599, 30, 60, 2)
|
254
|
+
assert_worker(@domain, SpecifiedTopic2Worker, 'SpecifiedTopic2', 2, 500..599, 35, 65, 1)
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
context 'dummy publishing' do
|
260
|
+
setup do
|
261
|
+
workers = [
|
262
|
+
DefaultWorker,
|
263
|
+
Dummy::DefaultWorker,
|
264
|
+
SpecifiedQueueWorker,
|
265
|
+
SpecifiedQueue2Worker,
|
266
|
+
SpecifiedTopicWorker,
|
267
|
+
SpecifiedTopic2Worker,
|
268
|
+
]
|
269
|
+
workers.each do |worker_klass|
|
270
|
+
worker_klass.send(:include, RubyTest)
|
271
|
+
end
|
272
|
+
WorkerHelper.reset_workers
|
273
|
+
ModernTimes::JMS::Publisher.setup_dummy_publishing(workers)
|
274
|
+
end
|
275
|
+
|
276
|
+
teardown do
|
277
|
+
ModernTimes::JMS::Publisher.clear_dummy_publishing
|
278
|
+
end
|
279
|
+
|
280
|
+
should "directly call applicable workers" do
|
281
|
+
publish(RubyTest, 100..199, :queue_name => 'Default')
|
282
|
+
publish(RubyTest, 200..299, :queue_name => 'Dummy_Default')
|
283
|
+
publish(RubyTest, 300..499, :queue_name => 'MyQueueName')
|
284
|
+
publish(RubyTest, 500..599, :virtual_topic_name => 'MyTopicName')
|
285
|
+
|
286
|
+
# DefaultWorker should have 5 instances running with each worker handling between 10-30 messages in the range 100.199
|
287
|
+
assert_worker(nil, DefaultWorker, nil, 1, 100..199, 100, 100, 1)
|
288
|
+
assert_worker(nil, Dummy::DefaultWorker, nil, 1, 200..299, 100, 100, 1)
|
289
|
+
assert_worker(nil, SpecifiedQueueWorker, nil, 1, 300..499, 200, 200, 1)
|
290
|
+
assert_worker(nil, SpecifiedQueue2Worker, nil, 1, 300..499, 200, 200, 1)
|
291
|
+
assert_worker(nil, SpecifiedTopicWorker, nil, 1, 500..599, 100, 100, 1)
|
292
|
+
assert_worker(nil, SpecifiedTopic2Worker, nil, 1, 500..599, 100, 100, 1)
|
293
|
+
end
|
294
|
+
end
|
295
|
+
end
|
296
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'modern_times'
|
5
|
+
|
6
|
+
class Klass
|
7
|
+
def initialize(str)
|
8
|
+
@str = str
|
9
|
+
end
|
10
|
+
def hello
|
11
|
+
@str
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class MarshalStrategyTest < Test::Unit::TestCase
|
16
|
+
context '' do
|
17
|
+
setup do
|
18
|
+
@bson = Object.new
|
19
|
+
@json = Object.new
|
20
|
+
@ruby = Object.new
|
21
|
+
@string = Object.new
|
22
|
+
@bson.extend ModernTimes::MarshalStrategy::BSON
|
23
|
+
@json.extend ModernTimes::MarshalStrategy::JSON
|
24
|
+
@ruby.extend ModernTimes::MarshalStrategy::Ruby
|
25
|
+
@string.extend ModernTimes::MarshalStrategy::String
|
26
|
+
end
|
27
|
+
|
28
|
+
should 'marshal and unmarshal correctly' do
|
29
|
+
hash = {'foo' => 42, 'bar' => 'zulu'}
|
30
|
+
str = 'abcdef1234'
|
31
|
+
obj = Klass.new('hello')
|
32
|
+
assert_equal hash, @bson.unmarshal(@bson.marshal(hash))
|
33
|
+
assert_equal hash, @json.unmarshal(@json.marshal(hash))
|
34
|
+
assert_equal hash, @ruby.unmarshal(@ruby.marshal(hash))
|
35
|
+
assert_equal str, @string.unmarshal(@string.marshal(str))
|
36
|
+
assert_equal obj.hello, @ruby.unmarshal(@ruby.marshal(obj)).hello
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modern_times
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
6
10
|
platform: ruby
|
7
11
|
authors:
|
8
12
|
- Brad Pardee
|
@@ -11,42 +15,36 @@ autorequire:
|
|
11
15
|
bindir: bin
|
12
16
|
cert_chain: []
|
13
17
|
|
14
|
-
date: 2011-
|
18
|
+
date: 2011-04-22 00:00:00 -04:00
|
15
19
|
default_executable:
|
16
20
|
dependencies:
|
17
21
|
- !ruby/object:Gem::Dependency
|
18
|
-
name: jruby-
|
22
|
+
name: jruby-jms
|
19
23
|
prerelease: false
|
20
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
-
none: false
|
22
25
|
requirements:
|
23
26
|
- - ">="
|
24
27
|
- !ruby/object:Gem::Version
|
25
|
-
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 11
|
31
|
+
- 0
|
32
|
+
version: 0.11.0
|
26
33
|
type: :runtime
|
27
34
|
version_requirements: *id001
|
28
35
|
- !ruby/object:Gem::Dependency
|
29
36
|
name: jmx
|
30
37
|
prerelease: false
|
31
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
32
|
-
none: false
|
33
39
|
requirements:
|
34
40
|
- - ">="
|
35
41
|
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
- 6
|
36
45
|
version: "0.6"
|
37
46
|
type: :runtime
|
38
47
|
version_requirements: *id002
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
name: json
|
41
|
-
prerelease: false
|
42
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: "0"
|
48
|
-
type: :runtime
|
49
|
-
version_requirements: *id003
|
50
48
|
description: Generic asynchronous task library
|
51
49
|
email:
|
52
50
|
- bradpardee@gmail.com
|
@@ -63,9 +61,10 @@ files:
|
|
63
61
|
- README.rdoc
|
64
62
|
- Rakefile
|
65
63
|
- VERSION
|
64
|
+
- examples/README
|
65
|
+
- examples/jms.yml
|
66
66
|
- examples/requestor/.gitignore
|
67
67
|
- examples/requestor/README
|
68
|
-
- examples/requestor/hornetq.yml
|
69
68
|
- examples/requestor/manager.rb
|
70
69
|
- examples/requestor/request.rb
|
71
70
|
- examples/requestor/reverse_echo_worker.rb
|
@@ -73,7 +72,6 @@ files:
|
|
73
72
|
- examples/simple/README
|
74
73
|
- examples/simple/bar_worker.rb
|
75
74
|
- examples/simple/baz_worker.rb
|
76
|
-
- examples/simple/hornetq.yml
|
77
75
|
- examples/simple/manager.rb
|
78
76
|
- examples/simple/publish.rb
|
79
77
|
- lib/modern_times.rb
|
@@ -82,29 +80,32 @@ files:
|
|
82
80
|
- lib/modern_times/base/supervisor_mbean.rb
|
83
81
|
- lib/modern_times/base/worker.rb
|
84
82
|
- lib/modern_times/exception.rb
|
85
|
-
- lib/modern_times/
|
86
|
-
- lib/modern_times/
|
87
|
-
- lib/modern_times/
|
88
|
-
- lib/modern_times/
|
89
|
-
- lib/modern_times/
|
90
|
-
- lib/modern_times/
|
91
|
-
- lib/modern_times/
|
92
|
-
- lib/modern_times/
|
93
|
-
- lib/modern_times/
|
94
|
-
- lib/modern_times/
|
95
|
-
- lib/modern_times/
|
96
|
-
- lib/modern_times/
|
97
|
-
- lib/modern_times/hornetq_requestor/requestor.rb
|
98
|
-
- lib/modern_times/hornetq_requestor/worker.rb
|
83
|
+
- lib/modern_times/jms.rb
|
84
|
+
- lib/modern_times/jms/connection.rb
|
85
|
+
- lib/modern_times/jms/publisher.rb
|
86
|
+
- lib/modern_times/jms/supervisor.rb
|
87
|
+
- lib/modern_times/jms/supervisor_mbean.rb
|
88
|
+
- lib/modern_times/jms/worker.rb
|
89
|
+
- lib/modern_times/jms_requestor.rb
|
90
|
+
- lib/modern_times/jms_requestor/request_handle.rb
|
91
|
+
- lib/modern_times/jms_requestor/requestor.rb
|
92
|
+
- lib/modern_times/jms_requestor/supervisor.rb
|
93
|
+
- lib/modern_times/jms_requestor/supervisor_mbean.rb
|
94
|
+
- lib/modern_times/jms_requestor/worker.rb
|
99
95
|
- lib/modern_times/loggable.rb
|
100
96
|
- lib/modern_times/manager.rb
|
101
97
|
- lib/modern_times/manager_mbean.rb
|
98
|
+
- lib/modern_times/marshal_strategy.rb
|
99
|
+
- lib/modern_times/marshal_strategy/bson.rb
|
100
|
+
- lib/modern_times/marshal_strategy/json.rb
|
101
|
+
- lib/modern_times/marshal_strategy/ruby.rb
|
102
|
+
- lib/modern_times/marshal_strategy/string.rb
|
102
103
|
- lib/modern_times/railsable.rb
|
103
|
-
-
|
104
|
-
- test/
|
105
|
-
- test/
|
106
|
-
- test/
|
107
|
-
- test/
|
104
|
+
- test/base_test.rb
|
105
|
+
- test/jms.yml
|
106
|
+
- test/jms_requestor_test.rb
|
107
|
+
- test/jms_test.rb
|
108
|
+
- test/marshal_strategy_test.rb
|
108
109
|
has_rdoc: true
|
109
110
|
homepage: http://github.com/ClarityServices/modern_times
|
110
111
|
licenses: []
|
@@ -115,21 +116,23 @@ rdoc_options: []
|
|
115
116
|
require_paths:
|
116
117
|
- lib
|
117
118
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
119
|
requirements:
|
120
120
|
- - ">="
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
+
segments:
|
123
|
+
- 0
|
122
124
|
version: "0"
|
123
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
126
|
requirements:
|
126
127
|
- - ">="
|
127
128
|
- !ruby/object:Gem::Version
|
129
|
+
segments:
|
130
|
+
- 0
|
128
131
|
version: "0"
|
129
132
|
requirements: []
|
130
133
|
|
131
134
|
rubyforge_project:
|
132
|
-
rubygems_version: 1.
|
135
|
+
rubygems_version: 1.3.6
|
133
136
|
signing_key:
|
134
137
|
specification_version: 3
|
135
138
|
summary: Asynchronous task library
|
@@ -141,7 +144,7 @@ test_files:
|
|
141
144
|
- examples/simple/baz_worker.rb
|
142
145
|
- examples/simple/manager.rb
|
143
146
|
- examples/simple/publish.rb
|
144
|
-
- test/
|
145
|
-
- test/
|
146
|
-
- test/
|
147
|
-
- test/
|
147
|
+
- test/base_test.rb
|
148
|
+
- test/jms_requestor_test.rb
|
149
|
+
- test/jms_test.rb
|
150
|
+
- test/marshal_strategy_test.rb
|