Class: RServiceBus::ResourceManager
- Inherits:
-
Object
- Object
- RServiceBus::ResourceManager
- Defined in:
- lib/rservicebus/ResourceManager.rb
Overview
Coordinate Transactions across resources, handlers, and Sagas
Instance Method Summary collapse
- #add(name, res) ⇒ Object
- #Begin ⇒ Object
- #Commit(msgName) ⇒ Object
- #get(name) ⇒ Object
- #getAll ⇒ Object
-
#initialize(stateManager, sagaStorage) ⇒ ResourceManager
constructor
Constructor.
- #Rollback(msgName) ⇒ Object
Constructor Details
#initialize(stateManager, sagaStorage) ⇒ ResourceManager
Constructor
8 9 10 11 12 13 |
# File 'lib/rservicebus/ResourceManager.rb', line 8 def initialize( stateManager, sagaStorage ) @appResources = Hash.new @currentResources = Hash.new @stateManager = stateManager @sagaStorage = sagaStorage end |
Instance Method Details
#add(name, res) ⇒ Object
15 16 17 |
# File 'lib/rservicebus/ResourceManager.rb', line 15 def add( name, res ) @appResources[name] = res end |
#Begin ⇒ Object
23 24 25 26 27 |
# File 'lib/rservicebus/ResourceManager.rb', line 23 def Begin @currentResources = Hash.new @stateManager.Begin @sagaStorage.Begin end |
#Commit(msgName) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/rservicebus/ResourceManager.rb', line 40 def Commit( msgName ) @stateManager.Commit @sagaStorage.Commit RServiceBus.rlog "HandlerManager.commitResourcesUsedToProcessMsg, #{msgName}" @currentResources.each do |k,v| RServiceBus.rlog "Commit resource, #{v.class.name}" v.Commit v.finished end end |
#get(name) ⇒ Object
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rservicebus/ResourceManager.rb', line 29 def get( name ) if @currentResources[name].nil? then r = @appResources[name] r._connect r.Begin RServiceBus.rlog "Preparing resource: #{name}. Begin" end @currentResources[name] = @appResources[name] return @appResources[name] end |
#getAll ⇒ Object
19 20 21 |
# File 'lib/rservicebus/ResourceManager.rb', line 19 def getAll return @appResources end |
#Rollback(msgName) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rservicebus/ResourceManager.rb', line 52 def Rollback( msgName ) @sagaStorage.Rollback RServiceBus.rlog "HandlerManager.rollbackResourcesUsedToProcessMsg, #{msgName}" @currentResources.each do |k,v| begin RServiceBus.rlog "Rollback resource, #{v.class.name}" v.Rollback v.finished rescue Exception => e1 puts "Caught nested exception rolling back, #{v.class.name}, for msg, #{msgName}" puts '****' puts e1. puts e1.backtrace puts '****' end end end |