Example #1
0
        static void InitializeENodeFramework()
        {
            var assemblies = new[]
            {
                Assembly.Load("NoteSample.Domain"),
                Assembly.Load("NoteSample.Commands"),
                Assembly.Load("NoteSample.CommandHandlers"),
                Assembly.GetExecutingAssembly()
            };
            var loggerFactory = new SerilogLoggerFactory();

            loggerFactory.AddFileLogger("ECommon", "ecommon");
            loggerFactory.AddFileLogger("EQueue", "equeue");
            loggerFactory.AddFileLogger("ENode", "enode");
            _configuration = Configuration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseSerilog(loggerFactory)
                             .UseJsonNet()
                             .RegisterUnhandledExceptionHandler()
                             .CreateENode()
                             .RegisterENodeComponents()
                             .RegisterBusinessComponents(assemblies)
                             .UseEQueue()
                             .BuildContainer()
                             .InitializeBusinessAssemblies(assemblies)
                             .StartEQueue()
                             .Start();

            Console.WriteLine(string.Empty);

            _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Program).Name);
            _logger.Info("ENode started...");
        }
Example #2
0
        static void InitializeENodeFramework()
        {
            var assemblies = new[]
            {
                Assembly.Load("NoteSample.Domain"),
                Assembly.Load("NoteSample.Commands"),
                Assembly.Load("NoteSample.CommandHandlers"),
                Assembly.GetExecutingAssembly()
            };
            var loggerFactory = new SerilogLoggerFactory();

            loggerFactory.AddFileLogger("ECommon", "ecommon");
            loggerFactory.AddFileLogger("EQueue", "equeue");
            loggerFactory.AddFileLogger("ENode", "enode");
            _configuration = ECommonConfiguration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseSerilog(loggerFactory)
                             .UseJsonNet()
                             .RegisterUnhandledExceptionHandler()
                             .CreateENode()
                             .RegisterENodeComponents()
                             .RegisterBusinessComponents(assemblies)
                             .BuildContainer()
                             .InitializeBusinessAssemblies(assemblies);
            _eventService = ObjectContainer.Resolve <IEventCommittingService>();

            _logger           = ObjectContainer.Resolve <ILoggerFactory>().Create("main");
            _repository       = ObjectContainer.Resolve <IRepository>();
            _commandProcessor = ObjectContainer.Resolve <ICommandProcessor>();

            Console.WriteLine("ENode started...");
        }
Example #3
0
        private void InitializeENode(
            bool useMockEventStore                  = false,
            bool useMockPublishedVersionStore       = false,
            bool useMockDomainEventPublisher        = false,
            bool useMockApplicationMessagePublisher = false,
            bool useMockDomainExceptionPublisher    = false)
        {
            var connectionString = ConfigurationManager.AppSettings["connectionString"];
            var assemblies       = new[]
            {
                Assembly.GetExecutingAssembly()
            };
            var loggerFactory = new SerilogLoggerFactory();

            loggerFactory.AddFileLogger("ECommon", "ecommon");
            loggerFactory.AddFileLogger("EQueue", "equeue");
            loggerFactory.AddFileLogger("ENode", "enode");
            _enodeConfiguration = ECommonConfiguration
                                  .Create()
                                  .UseAutofac()
                                  .RegisterCommonComponents()
                                  .UseSerilog(loggerFactory)
                                  .UseJsonNet()
                                  .RegisterUnhandledExceptionHandler()
                                  .CreateENode()
                                  .RegisterENodeComponents()
                                  .UseEventStore(useMockEventStore)
                                  .UsePublishedVersionStore(useMockPublishedVersionStore)
                                  .RegisterBusinessComponents(assemblies)
                                  .InitializeEQueue()
                                  .UseEQueue(useMockDomainEventPublisher, useMockApplicationMessagePublisher, useMockDomainExceptionPublisher)
                                  .BuildContainer();

            if (!useMockEventStore)
            {
                _enodeConfiguration.InitializeSqlServerEventStore(connectionString);
            }
            if (!useMockPublishedVersionStore)
            {
                _enodeConfiguration.InitializeSqlServerPublishedVersionStore(connectionString);
            }

            _enodeConfiguration
            .InitializeBusinessAssemblies(assemblies)
            .StartEQueue()
            .Start();

            _commandService              = ObjectContainer.Resolve <ICommandService>();
            _memoryCache                 = ObjectContainer.Resolve <IMemoryCache>();
            _eventStore                  = ObjectContainer.Resolve <IEventStore>();
            _publishedVersionStore       = ObjectContainer.Resolve <IPublishedVersionStore>();
            _domainEventPublisher        = ObjectContainer.Resolve <IMessagePublisher <DomainEventStreamMessage> >();
            _applicationMessagePublisher = ObjectContainer.Resolve <IMessagePublisher <IApplicationMessage> >();
            _domainExceptionPublisher    = ObjectContainer.Resolve <IMessagePublisher <IDomainException> >();
            _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(BaseTest));
            _logger.Info("----ENode initialized.");
        }
Example #4
0
        static void InitializeENodeFramework()
        {
            var connectionString = ConfigurationManager.AppSettings["connectionString"];
            var loggerFactory    = new SerilogLoggerFactory();

            loggerFactory.AddFileLogger("ECommon", "ecommon");
            loggerFactory.AddFileLogger("EQueue", "equeue");
            loggerFactory.AddFileLogger("ENode", "enode");
            _configuration = ECommonConfiguration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseSerilog(loggerFactory)
                             .UseJsonNet()
                             .RegisterUnhandledExceptionHandler()
                             .CreateENode()
                             .RegisterENodeComponents()
                             .UseSqlServerEventStore()
                             .BuildContainer()
                             .InitializeSqlServerEventStore(connectionString);

            Console.WriteLine("ENode started...");
        }
Example #5
0
        static void NormalTest()
        {
            var assemblies    = new[] { Assembly.GetExecutingAssembly() };
            var loggerFactory = new SerilogLoggerFactory();

            loggerFactory.AddFileLogger("ECommon", "ecommon");
            loggerFactory.AddFileLogger("EQueue", "equeue");
            loggerFactory.AddFileLogger("ENode", "enode");
            _configuration = ECommon.Configurations.Configuration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseSerilog(loggerFactory)
                             .UseJsonNet()
                             .CreateENode()
                             .RegisterENodeComponents()
                             .RegisterBusinessComponents(assemblies)
                             .UseEQueue()
                             .BuildContainer()
                             .InitializeBusinessAssemblies(assemblies)
                             .StartEQueue()
                             .Start();

            Console.WriteLine(string.Empty);
            Console.WriteLine("ENode started...");

            var commandService = ObjectContainer.Resolve <ICommandService>();
            var syncHelper     = ObjectContainer.Resolve <SyncHelper>();
            var account1       = ObjectId.GenerateNewStringId();
            var account2       = ObjectId.GenerateNewStringId();
            var account3       = "INVALID-" + ObjectId.GenerateNewStringId();

            Console.WriteLine(string.Empty);

            //创建两个银行账户
            commandService.ExecuteAsync(new CreateAccountCommand(account1, "雪华"), CommandReturnType.EventHandled).Wait();
            commandService.ExecuteAsync(new CreateAccountCommand(account2, "凯锋"), CommandReturnType.EventHandled).Wait();

            Console.WriteLine(string.Empty);

            //每个账户都存入1000元
            commandService.SendAsync(new StartDepositTransactionCommand(ObjectId.GenerateNewStringId(), account1, 1000)).Wait();
            syncHelper.WaitOne();
            commandService.SendAsync(new StartDepositTransactionCommand(ObjectId.GenerateNewStringId(), account2, 1000)).Wait();
            syncHelper.WaitOne();

            Console.WriteLine(string.Empty);

            //账户1向账户3转账300元,交易会失败,因为账户3不存在
            commandService.SendAsync(new StartTransferTransactionCommand(ObjectId.GenerateNewStringId(), new TransferTransactionInfo(account1, account3, 300D))
            {
                Items = new Dictionary <string, string>
                {
                    { "ProcessId", "10000" }
                }
            }).Wait();
            syncHelper.WaitOne();
            Console.WriteLine(string.Empty);

            //账户1向账户2转账1200元,交易会失败,因为余额不足
            commandService.SendAsync(new StartTransferTransactionCommand(ObjectId.GenerateNewStringId(), new TransferTransactionInfo(account1, account2, 1200D))
            {
                Items = new Dictionary <string, string>
                {
                    { "ProcessId", "10001" }
                }
            }).Wait();
            syncHelper.WaitOne();
            Console.WriteLine(string.Empty);

            //账户2向账户1转账500元,交易成功
            commandService.SendAsync(new StartTransferTransactionCommand(ObjectId.GenerateNewStringId(), new TransferTransactionInfo(account2, account1, 500D))
            {
                Items = new Dictionary <string, string>
                {
                    { "ProcessId", "10002" }
                }
            }).Wait();
            syncHelper.WaitOne();

            Thread.Sleep(200);
            Console.WriteLine(string.Empty);
            Console.WriteLine("Press Enter to exit...");
            Console.ReadLine();
            _configuration.ShutdownEQueue();
        }