rservicebus 0.1.30 → 0.1.31

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,41 @@
1
+ module RServiceBus
2
+
3
+ require 'parse-cron'
4
+
5
+ class CronManager
6
+
7
+ def initialize( host )
8
+ @Bus = host
9
+
10
+ @Bus.log "Load Cron", true
11
+ @list = Array.new
12
+ ENV.each do |k,v|
13
+ if k.start_with?( "RSBCRON_" ) then
14
+ hash = Hash.new
15
+ hash['name'] = k.sub( "RSBCRON_", "" )
16
+ hash['last'] = Time.now
17
+ hash['v'] = v
18
+ hash['cron'] = CronParser.new(v)
19
+ hash['next'] = hash['cron'].next(Time.now)
20
+ @list << hash
21
+ @Bus.log( "Cron set for, #{hash['name']}, #{v}" )
22
+ end
23
+ end
24
+ end
25
+
26
+ def Run
27
+ now = Time.now
28
+ @list.map! do |v|
29
+ if now > v['next'] then
30
+ @Bus.log "CronManager.Send, #{v['name']}", true
31
+ @Bus.Send( RServiceBus.createAnonymousClass( v['name'] ) )
32
+ v['next'] = v['cron'].next(now)
33
+ end
34
+ return v
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
@@ -51,13 +51,20 @@ module RServiceBus
51
51
  return self;
52
52
  end
53
53
 
54
- #Thin veneer for Configuring external resources
54
+ #Thin veneer for Configuring state
55
55
  #
56
56
  def configureStateManager
57
57
  @stateManager = StateManager.new
58
58
  return self;
59
59
  end
60
60
 
61
+ #Thin veneer for Configuring Cron
62
+ #
63
+ def configureCronManager
64
+ @cronManager = CronManager.new( self )
65
+ return self;
66
+ end
67
+
61
68
 
62
69
 
63
70
  #Thin veneer for Configuring external resources
@@ -158,6 +165,7 @@ module RServiceBus
158
165
  .loadLibs()
159
166
  .configureAppResource()
160
167
  .configureStateManager()
168
+ .configureCronManager()
161
169
  .configureMonitors()
162
170
  .loadHandlers()
163
171
  .connectToMq()
@@ -287,14 +295,16 @@ module RServiceBus
287
295
  #This exception is just saying there are no messages to process
288
296
  statOutputCountdown = 0
289
297
  @queueForMsgsToBeSentOnComplete = Array.new
290
-
291
298
  @monitors.each do |o|
292
299
  o.Look
293
300
  end
294
-
295
301
  self.sendQueuedMsgs
296
302
  @queueForMsgsToBeSentOnComplete = nil
297
303
 
304
+ @queueForMsgsToBeSentOnComplete = Array.new
305
+ @cronManager.Run
306
+ self.sendQueuedMsgs
307
+ @queueForMsgsToBeSentOnComplete = nil
298
308
 
299
309
  rescue Exception => e
300
310
  if e.message == "SIGTERM" then
data/lib/rservicebus.rb CHANGED
@@ -28,6 +28,7 @@ require "rservicebus/Message/Subscription"
28
28
  require "rservicebus/UserMessage/WithPayload"
29
29
 
30
30
  require "rservicebus/StateManager"
31
+ require "rservicebus/CronManager"
31
32
 
32
33
  require "rservicebus/AppResource"
33
34
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rservicebus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.30
4
+ version: 0.1.31
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-29 00:00:00.000000000 Z
12
+ date: 2013-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: uuidtools
16
- requirement: &70343784634080 !ruby/object:Gem::Requirement
16
+ requirement: &70156714762740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70343784634080
24
+ version_requirements: *70156714762740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70343784656360 !ruby/object:Gem::Requirement
27
+ requirement: &70156714787740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70343784656360
35
+ version_requirements: *70156714787740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: beanstalk-client
38
- requirement: &70343784655320 !ruby/object:Gem::Requirement
38
+ requirement: &70156714782020 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70343784655320
46
+ version_requirements: *70156714782020
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: fluiddb
49
- requirement: &70343784654340 !ruby/object:Gem::Requirement
49
+ requirement: &70156714797120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,18 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70343784654340
57
+ version_requirements: *70156714797120
58
+ - !ruby/object:Gem::Dependency
59
+ name: parse-cron
60
+ requirement: &70156714793580 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70156714793580
58
69
  description: A Ruby interpretation of NServiceBus
59
70
  email: guy@guyirvine.com
60
71
  executables:
@@ -89,6 +100,7 @@ files:
89
100
  - lib/rservicebus/ConfigureMonitor.rb
90
101
  - lib/rservicebus/ConfigureMQ.rb
91
102
  - lib/rservicebus/ConfigureSubscriptionStorage.rb
103
+ - lib/rservicebus/CronManager.rb
92
104
  - lib/rservicebus/EndpointMapping.rb
93
105
  - lib/rservicebus/ErrorMessage.rb
94
106
  - lib/rservicebus/HandlerLoader.rb