async Task ProcessMessage(ISagaManager managerA, TestController testController) { var completed = false; while (!completed) { try { await managerA.Process <SagaData>(MessageId, SagaId, new ContextBag(), HandlerCallback); completed = true; testController.Complete(); } catch (ScenarioIncompleteException e) { Console.WriteLine("Scenario incomplete"); break; } catch (ConcurrencyException e) { //Swallow and retry } catch (Exception e) { Console.WriteLine(e.Message); } } }
public SagaManagerTask(ISagaManagerFactory managerFactory, IDispatchMessages dispatcher, string messageId, string sagaId, string processId) { this.manager = managerFactory.Create(GetBarrier, dispatcher); this.messageId = messageId; this.sagaId = sagaId; this.processId = processId; }
public void Register(IResourceManager rmgr, ISagaManager smgr) { var factory = new WaitMessageSagaFactory(plugin.BotManager); rmgr.RegisterResourceFactory(factory.SagaKind, new SagaResourceFactory(factory)); rmgr.RegisterResources(WaitMessageSaga.GetHandledTypes()); smgr.RegisterSagaFactory(factory, WaitMessageSaga.GetHandledTypes()); }
public void Register(IResourceManager rmgr, ISagaManager smgr) { var factory = new RegisterBotSagaFactory(plugin.BotManager); rmgr.RegisterResourceFactory(factory.SagaKind, new SagaResourceFactory(factory)); rmgr.RegisterResources(RegisterBotProcessingSaga.GetHandledTypes()); smgr.RegisterSagaFactory(factory, RegisterBotProcessingSaga.GetHandledTypes()); }
public static Task Process <T>(this ISagaManager sagaManager, string correlationId, IMessageHandlerContext context, Func <T, Task <T> > handlerCallback) where T : class, new() { return(sagaManager.Process(context.MessageId, correlationId, context.Extensions, (Func <T, ContextBag, Task <(T, PendingTransportOperations)> >)(async(sagaData, bag) => { var pendingTransportOperations = new PendingTransportOperations(); bag.Set(pendingTransportOperations); //override the one set by the outbox var newSagaData = await handlerCallback(sagaData).ConfigureAwait(false); bag.Remove <PendingTransportOperations>(); //Restore old value return (newSagaData, pendingTransportOperations); }))); }
public OrderServices(IDatabaseAdapter <Order> databaseAdapter, ISagaManager <BookingTripState> sagaManager) { _databaseAdapter = databaseAdapter; _sagaManager = sagaManager; }
public OrderSaga(ISagaManager sagaManager) { this.sagaManager = sagaManager; }