Class: RServiceBus2::ResourceManager
- Inherits:
-
Object
- Object
- RServiceBus2::ResourceManager
- Defined in:
- lib/rservicebus2/resource_manager.rb
Overview
Coordinate Transactions across resources, handlers, and Sagas
Instance Method Summary collapse
- #add(name, res) ⇒ Object
- #all ⇒ Object
- #begin ⇒ Object
- #commit(msg_name) ⇒ Object
- #get(name) ⇒ Object
-
#initialize(state_manager, saga_storage) ⇒ ResourceManager
constructor
Constructor.
- #rollback(msg_name) ⇒ Object
Constructor Details
#initialize(state_manager, saga_storage) ⇒ ResourceManager
Constructor
7 8 9 10 11 12 |
# File 'lib/rservicebus2/resource_manager.rb', line 7 def initialize(state_manager, saga_storage) @app_resources = {} @current_resources = {} @state_manager = state_manager @saga_storage = saga_storage end |
Instance Method Details
#add(name, res) ⇒ Object
14 15 16 |
# File 'lib/rservicebus2/resource_manager.rb', line 14 def add(name, res) @app_resources[name] = res end |
#all ⇒ Object
18 19 20 |
# File 'lib/rservicebus2/resource_manager.rb', line 18 def all @app_resources end |
#begin ⇒ Object
22 23 24 25 26 |
# File 'lib/rservicebus2/resource_manager.rb', line 22 def begin @current_resources = {} @state_manager.begin @saga_storage.begin end |
#commit(msg_name) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rservicebus2/resource_manager.rb', line 39 def commit(msg_name) @state_manager.commit @saga_storage.commit RServiceBus2.rlog "HandlerManager.commitResourcesUsedToProcessMsg, #{msg_name}" @current_resources.each do |_k, v| RServiceBus2.rlog "Commit resource, #{v.class.name}" v.commit v.finished end end |
#get(name) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rservicebus2/resource_manager.rb', line 28 def get(name) if @current_resources[name].nil? r = @app_resources[name] r._connect r.begin RServiceBus2.rlog "Preparing resource: #{name}. Begin" end @current_resources[name] = @app_resources[name] @app_resources[name] end |
#rollback(msg_name) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rservicebus2/resource_manager.rb', line 50 def rollback(msg_name) @saga_storage.rollback RServiceBus2.rlog "HandlerManager.rollbackResourcesUsedToProcessMsg, #{msg_name}" @current_resources.each do |_k, v| RServiceBus2.rlog "Rollback resource, #{v.class.name}" v.rollback v.finished rescue StandardError => e puts "Caught nested exception rolling back, #{v.class.name}, for msg, #{msg_name}" puts "****\n#{e.}\n#{e.backtrace}\n'****" end end |