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;
 }
Пример #3
0
        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());
        }
Пример #5
0
    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);
        })));
    }
Пример #6
0
 public OrderServices(IDatabaseAdapter <Order> databaseAdapter, ISagaManager <BookingTripState> sagaManager)
 {
     _databaseAdapter = databaseAdapter;
     _sagaManager     = sagaManager;
 }
Пример #7
0
 public OrderSaga(ISagaManager sagaManager)
 {
     this.sagaManager = sagaManager;
 }