rservicebus 0.0.10 → 0.0.11

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.
data/README.md CHANGED
@@ -7,26 +7,7 @@ A Ruby interpretation of NServiceBus
7
7
  *Dont solve infrastructure problems with software
8
8
  *Infrastructure in this case refers to anything not specific to the application domain
9
9
 
10
- ##Points of view in the framework
11
- * Bus
12
- * Handler
13
- * Client
14
-
15
- #Platform
16
- * Messages
17
- * MessageHandler
18
- * MessageHandling
19
- * Queues
20
- * Transport
21
- * Transactions
22
-
23
- ##Message
24
- * Yaml
25
- * Unique Message ID's
26
-
27
10
  ##Queues
28
- * Durable
29
- * Store & Forward
30
11
  * Queues specified by config, determined by message type
31
12
 
32
13
  ##Transport
@@ -38,9 +19,3 @@ A Ruby interpretation of NServiceBus
38
19
  * Multiple handlers for message are in files under top level directory
39
20
  * Handlers are dynamically loaded
40
21
  * If a handler fails to load, the service wont start - infrastructure problem
41
-
42
- ##MessageHandling
43
- * Transactions are good, use them
44
- * Given transactions, the first thing to do on error is retry
45
- * Once we've used up retry, put the message on an error queue to process later - it's a logic problem
46
-
data/lib/rservicebus.rb CHANGED
@@ -19,6 +19,7 @@ require "rservicebus/Message/Subscription"
19
19
 
20
20
  require "rservicebus/AppResource"
21
21
  require "rservicebus/AppResource/Redis"
22
+ require "rservicebus/AppResource/Mysql"
22
23
 
23
24
  require "rservicebus/SubscriptionManager"
24
25
  require "rservicebus/SubscriptionStorage"
@@ -0,0 +1,28 @@
1
+ module RServiceBus
2
+
3
+ require "mysql2"
4
+
5
+ #Implementation of an AppResource - Redis
6
+ class AppResource_Mysql<AppResource
7
+
8
+ @connection
9
+
10
+ def initialize( uri )
11
+ super(uri)
12
+ host = uri.host
13
+ database = uri.path.sub( "/", "" )
14
+
15
+
16
+ @connection = Mysql2::Client.new(:host => uri.host,
17
+ :database => uri.path.sub( "/", "" ),
18
+ :username => uri.user )
19
+ puts "AppResource_Mysql. Connected to, " + uri.to_s
20
+ end
21
+
22
+ def getResource
23
+ return @connection
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -2,7 +2,7 @@ module RServiceBus
2
2
 
3
3
  #Marshals configuration information for an rservicebus host
4
4
  class Config
5
- attr_reader :appName, :messageEndpointMappings, :handlerPathList, :localQueueName, :errorQueueName, :maxRetries, :forwardReceivedMessagesTo, :verbose, :beanstalkHost, :queueTimeout
5
+ attr_reader :appName, :messageEndpointMappings, :handlerPathList, :localQueueName, :errorQueueName, :maxRetries, :forwardReceivedMessagesTo, :verbose, :beanstalkHost, :queueTimeout, :statOutputCountdown
6
6
 
7
7
  @appName
8
8
  @messageEndpointMappings
@@ -88,6 +88,7 @@ class Config
88
88
  @maxRetries = self.getValue( "MAX_RETRIES", "5" ).to_i
89
89
  @forwardReceivedMessagesTo = self.getValue( "FORWARD_RECEIVED_MESSAGES_TO" )
90
90
  @queueTimeout = self.getValue( "QUEUE_TIMEOUT", "5" ).to_i
91
+ @statOutputCountdown = self.getValue( "STAT_OUTPUT_COUNTDOWN", "100" ).to_i
91
92
 
92
93
  return self
93
94
  end
@@ -1,30 +1,33 @@
1
1
  module RServiceBus
2
-
3
- require "uri"
4
-
5
- #Configure AppResources for an rservicebus host
6
- class ConfigureAppResource
7
-
8
- def getResources( env )
9
- resources = Hash.new
10
-
11
- env.each do |k,v|
12
- if v.is_a?(String) and
2
+
3
+ require "uri"
4
+
5
+ #Configure AppResources for an rservicebus host
6
+ class ConfigureAppResource
7
+
8
+ def getResources( env )
9
+ resources = Hash.new
10
+
11
+ env.each do |k,v|
12
+ if v.is_a?(String) and
13
13
  k.start_with?( "RSB_" ) then
14
- uri = URI.parse( v )
15
- case uri.scheme
16
- when "redis"
14
+ uri = URI.parse( v )
15
+ case uri.scheme
16
+ when "redis"
17
17
  resources[k.sub( "RSB_", "" )] = AppResource_Redis.new( uri )
18
- else
18
+
19
+ when "mysql"
20
+ resources[k.sub( "RSB_", "" )] = AppResource_Mysql.new( uri )
21
+ else
19
22
  abort("Scheme, #{uri.scheme}, not recognised when configuring app resource, #{k}=#{v}");
20
- end
21
- end
22
-
23
- end
24
-
25
- return resources
26
- end
27
-
28
- end
29
-
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ return resources
29
+ end
30
+
31
+ end
32
+
30
33
  end
@@ -130,12 +130,19 @@ class Host
130
130
  # - Most of this should be queue independant
131
131
  def StartListeningToEndpoints
132
132
  log "Waiting for messages. To exit press CTRL+C"
133
+ statOutputCountdown = 0
134
+ messageLoop = true
133
135
 
134
- loop do
136
+ while messageLoop do
135
137
  retries = @config.maxRetries
136
138
  #Popping a msg off the queue should not be in the message handler, as it affects retry
137
139
  begin
138
- log @stats.getForReporting
140
+ if statOutputCountdown == 0 then
141
+ log @stats.getForReporting
142
+ statOutputCountdown = @config.statOutputCountdown-1
143
+ else
144
+ statOutputCountdown = statOutputCountdown - 1
145
+ end
139
146
  job = @beanstalk.reserve @config.queueTimeout
140
147
  begin
141
148
  body = job.body
@@ -182,13 +189,21 @@ class Host
182
189
  self._SendAlreadyWrappedAndSerialised(serialized_object, @config.errorQueueName)
183
190
  job.delete
184
191
  end
192
+ rescue SystemExit, Interrupt
193
+ puts "Exiting on request ..."
194
+ messageLoop = false
185
195
  rescue Exception => e
186
196
  if e.message == "TIMED_OUT" then
197
+ #This exception is just saying there are no messages to process
198
+ statOutputCountdown = 0
199
+ elsif e.message == "SIGTERM" then
200
+ puts "Exiting on request ..."
201
+ messageLoop = false
187
202
  else
188
203
  puts "*** This is really unexpected."
189
- puts e.message
204
+ messageLoop = false
205
+ puts "Message: " + e.message
190
206
  puts e.backtrace
191
- abort()
192
207
  end
193
208
  end
194
209
  end
@@ -35,6 +35,11 @@ class Test_Redis
35
35
  @keyHash[key] = @keyHash[key] + 1
36
36
  return @keyHash[key]
37
37
  end
38
+
39
+ def del( key )
40
+ @keyHash.delete( key )
41
+ end
42
+
38
43
  end
39
44
 
40
45
  end
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.0.10
4
+ version: 0.0.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-25 00:00:00.000000000 Z
12
+ date: 2012-07-03 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A Ruby interpretation of NServiceBus
15
15
  email: guy@guyirvine.com
@@ -20,6 +20,7 @@ extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
22
  - lib/rservicebus/Agent.rb
23
+ - lib/rservicebus/AppResource/Mysql.rb
23
24
  - lib/rservicebus/AppResource/Redis.rb
24
25
  - lib/rservicebus/AppResource.rb
25
26
  - lib/rservicebus/Config.rb