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..."); }
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..."); }
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."); }
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..."); }
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(); }