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
- #begin ⇒ Object
- #commit(msg_name) ⇒ Object
- #get(name) ⇒ Object
- #get_all ⇒ Object
-
#initialize(state_manager, saga_storage) ⇒ ResourceManager
constructor
Constructor.
- #rollback(msg_name) ⇒ Object
Constructor Details
#initialize(state_manager, saga_storage) ⇒ ResourceManager
Constructor
5 6 7 8 9 10 |
# File 'lib/rservicebus2/resource_manager.rb', line 5 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
12 13 14 |
# File 'lib/rservicebus2/resource_manager.rb', line 12 def add(name, res) @app_resources[name] = res end |
#begin ⇒ Object
20 21 22 23 24 |
# File 'lib/rservicebus2/resource_manager.rb', line 20 def begin @current_resources = {} @state_manager.begin @saga_storage.begin end |
#commit(msg_name) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rservicebus2/resource_manager.rb', line 37 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
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rservicebus2/resource_manager.rb', line 26 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 |
#get_all ⇒ Object
16 17 18 |
# File 'lib/rservicebus2/resource_manager.rb', line 16 def get_all @app_resources end |
#rollback(msg_name) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rservicebus2/resource_manager.rb', line 49 def rollback(msg_name) @saga_storage.rollback RServiceBus2.rlog "HandlerManager.rollbackResourcesUsedToProcessMsg, #{msg_name}" @current_resources.each do |k, v| begin RServiceBus2.rlog "Rollback resource, #{v.class.name}" v.rollback v.finished rescue StandardError => e1 puts "Caught nested exception rolling back, #{v.class.name}, for msg, #{msg_name}" puts '****' puts e1. puts e1.backtrace puts '****' end end end |