コード例 #1
0
        public void Run()
        {
            var builder = Wireup.UseInternalContainer()
                          .UseSqlServer()
                          .WithConnectionStringName("NSagaDatabase")
                          .UseMessageSerialiser <JsonNetSerialiser>();

            sagaMediator = builder.ResolveMediator();

            sagaRepository = builder.ResolveRepository();

            var correlationId = Guid.NewGuid();

            StartSaga(correlationId);

            RequestVerificationCode(correlationId);

            ProvideVerificationCode(correlationId);

            CreateAccount(correlationId);

            var saga      = sagaRepository.Find <AccountCreationSaga>(correlationId);
            var jamesName = saga.SagaData.Person.FullName;

            Console.WriteLine($"Taking information from SagaData; Person.FullName='{jamesName}'");
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: shanselman/NSaga
        public MediatorBenchmarking()
        {
            mediator = Wireup.UseInternalContainer().UseRepository <FastSagaRepository>().ResolveMediator();

            correlationId = Guid.NewGuid();
            mediator.Consume(new FirstMessage(Program.FirstGuid));
        }
コード例 #3
0
        public void WithSimpleInjector()
        {
            try
            {
                var container = new Container();
                container.RegisterNSagaComponents();
                container.UseSagaRepository <AzureTablesSagaRepository>();

                // You need Azure Storage emulator running to run this
                var connectionString = "UseDevelopmentStorage=true";
                container.Register <ITableClientFactory>(() => new TableClientFactory(connectionString), Lifestyle.Singleton);

                sagaMediator = container.GetInstance <ISagaMediator>();

                var correlationId = Guid.NewGuid();
                var initMessage   = new PersonalDetailsVerification(correlationId)
                {
                    FirstName = "James",
                    LastName  = "Bond",
                };

                sagaMediator.Consume(initMessage);
            }
            catch (Exception)
            {
                Console.WriteLine("Quite likely you don't have Azure Storage Emulator running, so this sample can't be executed");
            }
        }
コード例 #4
0
        public void Run()
        {
            try
            {
                // You need Azure Storage emulator running to run this
                var connectionString = "UseDevelopmentStorage=true";
                var builder          = Wireup.UseInternalContainer()
                                       .UseRepository <AzureTablesSagaRepository>()
                                       .Register(typeof(ITableClientFactory), new TableClientFactory(connectionString));

                sagaMediator = builder.ResolveMediator();

                var correlationId = Guid.NewGuid();
                var initMessage   = new PersonalDetailsVerification(correlationId)
                {
                    FirstName = "James",
                    LastName  = "Bond",
                };

                sagaMediator.Consume(initMessage);
            }
            catch (Exception)
            {
                Console.WriteLine("Quite likely you don't have Azure Storage Emulator running, so this sample can't be executed");
            }
        }
コード例 #5
0
        /// <summary>
        /// Default constructor to initialize the policy constructor
        /// </summary>
        /// <param name="request">New policy request</param>
        public PolicyCreator(NewPolicyRequest request)
        {
            _newPolicyRequest = request;

            var builder = Wireup.UseInternalContainer().UseMessageSerialiser <JsonNetSerialiser>();

            sagaMediator   = builder.ResolveMediator();
            sagaRepository = builder.ResolveRepository();

            _guid = Guid.NewGuid();
            Console.WriteLine($"New GUID: {_guid}");

            ((ISagaMessage)_newPolicyRequest).CorrelationId = _guid;
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: itomych/NSaga
        public void Run()
        {
            var builder = new ContainerBuilder();

            var options = new DbContextOptionsBuilder <MyContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          // don't raise the error warning us that the in memory db doesn't support transactions
                          .ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning))
                          .Options;

            //var options = new DbContextOptionsBuilder<MyContext>()
            //            .UseNpgsql("Host=localhost;Port=5432;Database=demodb;Username=postgres;Password=postgres")
            //            .Options;

            builder.RegisterType <MyContext>()
            .WithParameter("options", options)
            .InstancePerLifetimeScope();

            builder
            .RegisterNSagaComponents()
            .UseSqlServer()
            .WithDatabase <SagaSqlDatabase <MyContext> >();

            var container = builder.Build();

            sagaMediator   = container.Resolve <ISagaMediator>();
            sagaRepository = container.Resolve <ISagaRepository>();

            var correlationId = Guid.NewGuid();

            StartSaga(correlationId);

            RequestVerificationCode(correlationId);

            ProvideVerificationCode(correlationId);

            CreateAccount(correlationId);

            var saga      = sagaRepository.Find <AccountCreationSaga>(correlationId);
            var jamesName = saga.SagaData.Person.FullName;

            Console.WriteLine($"Taking information from SagaData; Person.FullName='{jamesName}'");
        }
コード例 #7
0
 public SagaConsumer(ISagaMediator sagaMediator)
 {
     _sagaMediator = sagaMediator;
 }