rservicebus 0.0.7 → 0.0.8
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 +4 -2
- data/lib/rservicebus/Config.rb +46 -7
- data/lib/rservicebus/Host.rb +17 -3
- metadata +2 -2
data/README.md
CHANGED
@@ -34,15 +34,17 @@ proving to be a workable framework.
|
|
34
34
|
* Queues specified by config, determined by message type
|
35
35
|
|
36
36
|
##Transport
|
37
|
-
*
|
37
|
+
* beanstalk
|
38
38
|
|
39
39
|
##MessageHandler
|
40
40
|
* Name by convention - Handler name matchs filename
|
41
|
+
* Single handler for message is in top level file
|
42
|
+
* Multiple handlers for message are in files under top level directory
|
41
43
|
* Handlers are dynamically loaded
|
42
44
|
* If a handler fails to load, the service wont start - infrastructure problem
|
43
45
|
|
44
46
|
##MessageHandling
|
45
47
|
* Transactions are good, use them
|
46
|
-
* Given transactions, the first to do on error is retry
|
48
|
+
* Given transactions, the first thing to do on error is retry
|
47
49
|
* Once we've used up retry, put the message on an error queue to process later - it's a logic problem
|
48
50
|
|
data/lib/rservicebus/Config.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module RServiceBus
|
2
2
|
|
3
|
-
#
|
3
|
+
#Marshals configuration information for an rservicebus host
|
4
4
|
class Config
|
5
5
|
attr_reader :appName, :messageEndpointMappings, :handlerPathList, :localQueueName, :errorQueueName, :maxRetries, :forwardReceivedMessagesTo, :verbose, :beanstalkHost
|
6
6
|
|
@@ -24,12 +24,20 @@ class Config
|
|
24
24
|
abort()
|
25
25
|
end
|
26
26
|
|
27
|
+
def log( string )
|
28
|
+
puts string
|
29
|
+
end
|
30
|
+
|
27
31
|
def getValue( name, default=nil )
|
28
|
-
value = ENV[
|
29
|
-
|
32
|
+
value = ( ENV[name].nil? || ENV[name] == "" ) ? default : ENV[name];
|
33
|
+
log "Env value: #{name}: #{value}"
|
30
34
|
return value
|
31
35
|
end
|
32
36
|
|
37
|
+
#Marshals data for message end points
|
38
|
+
#
|
39
|
+
#Expected format;
|
40
|
+
# <msg mame 1>:<end point 1>;<msg mame 2>:<end point 2>
|
33
41
|
def loadMessageEndpointMappings()
|
34
42
|
mapping = self.getValue( "MESSAGE_ENDPOINT_MAPPINGS" )
|
35
43
|
|
@@ -37,6 +45,12 @@ class Config
|
|
37
45
|
if !mapping.nil? then
|
38
46
|
mapping.split( ";" ).each do |line|
|
39
47
|
match = line.match( /(.+):(.+)/ )
|
48
|
+
if match.nil? then
|
49
|
+
log "Mapping string provided is invalid"
|
50
|
+
log "The entire mapping string is: #{mapping}"
|
51
|
+
log "*** Could not find ':' in mapping entry, #{line}"
|
52
|
+
exit()
|
53
|
+
end
|
40
54
|
messageEndpointMappings[match[1]] = match[2]
|
41
55
|
end
|
42
56
|
end
|
@@ -46,6 +60,12 @@ class Config
|
|
46
60
|
return self
|
47
61
|
end
|
48
62
|
|
63
|
+
#Marshals paths for message handlers
|
64
|
+
#
|
65
|
+
#Note. trailing slashs will be stripped
|
66
|
+
#
|
67
|
+
#Expected format;
|
68
|
+
# <path 1>;<path 2>
|
49
69
|
def loadHandlerPathList()
|
50
70
|
path = self.getValue( "MSGHANDLERPATH", "./MessageHandler" )
|
51
71
|
handlerPathList = Array.new
|
@@ -59,10 +79,9 @@ class Config
|
|
59
79
|
return self
|
60
80
|
end
|
61
81
|
|
62
|
-
|
63
82
|
def loadHostSection()
|
64
83
|
@appName = self.getValue( "APPNAME", "RServiceBus" )
|
65
|
-
@localQueueName = @appName
|
84
|
+
@localQueueName = self.getValue( "LOCAL_QUEUE_NAME", @appName )
|
66
85
|
@errorQueueName = self.getValue( "ERROR_QUEUE_NAME", "error" )
|
67
86
|
@maxRetries = self.getValue( "MAX_RETRIES", "5" ).to_i
|
68
87
|
@forwardReceivedMessagesTo = self.getValue( "FORWARD_RECEIVED_MESSAGES_TO" )
|
@@ -70,14 +89,34 @@ class Config
|
|
70
89
|
return self
|
71
90
|
end
|
72
91
|
|
92
|
+
def performRequire( path )
|
93
|
+
require path
|
94
|
+
end
|
95
|
+
|
96
|
+
def ensureContractFileExists( path )
|
97
|
+
if !( File.exists?( path ) ||
|
98
|
+
File.exists?( "#{path}.rb" ) ) then
|
99
|
+
puts "Error while processing contracts"
|
100
|
+
puts "*** path, #{path}, provided does not exist as a file"
|
101
|
+
abort()
|
102
|
+
end
|
103
|
+
if !( File.extname( path ) == "" ||
|
104
|
+
File.extname( path ) == ".rb" ) then
|
105
|
+
puts "Error while processing contracts"
|
106
|
+
puts "*** path, #{path}, should point to a ruby file, with extention .rb"
|
107
|
+
abort()
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
73
111
|
def loadContracts()
|
74
112
|
if self.getValue( "CONTRACTS", "./Contract" ).nil? then
|
75
113
|
return self
|
76
114
|
end
|
77
115
|
|
78
116
|
self.getValue( "CONTRACTS", "./Contract" ).split( ";" ).each do |path|
|
79
|
-
|
80
|
-
|
117
|
+
log "Loading contracts from, #{path}"
|
118
|
+
self.ensureContractFileExists( path )
|
119
|
+
self.performRequire( path )
|
81
120
|
end
|
82
121
|
return self
|
83
122
|
end
|
data/lib/rservicebus/Host.rb
CHANGED
@@ -98,10 +98,24 @@ class Host
|
|
98
98
|
log "Load subscriptions"
|
99
99
|
@subscriptions = Hash.new
|
100
100
|
|
101
|
-
|
101
|
+
begin
|
102
|
+
redis = Redis.new
|
102
103
|
|
103
|
-
|
104
|
-
|
104
|
+
prefix = @config.appName + ".Subscriptions."
|
105
|
+
subscriptions = redis.keys prefix + "*Event"
|
106
|
+
rescue Exception => e
|
107
|
+
puts "Error connecting to redis"
|
108
|
+
# puts "Host string, #{@config.beanstalkHost}"
|
109
|
+
if e.message == "Redis::CannotConnectError" ||
|
110
|
+
e.message == "Redis::ECONNREFUSED" then
|
111
|
+
puts "***Most likely, redis is not running. Start redis, and try running this again."
|
112
|
+
# puts "***If you still get this error, check redis is running at, " + beanstalkHost
|
113
|
+
else
|
114
|
+
puts e.message
|
115
|
+
puts e.backtrace
|
116
|
+
end
|
117
|
+
abort()
|
118
|
+
end
|
105
119
|
|
106
120
|
subscriptions.each do |subscriptionName|
|
107
121
|
log "Loading subscription: " + subscriptionName, true
|
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.
|
4
|
+
version: 0.0.8
|
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-
|
12
|
+
date: 2012-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A ruby implementation of NServiceBus
|
15
15
|
email: guy@guyirvine.com
|