예제 #1
0
 static void InitializeEQueue()
 {
     var configuration = ECommonConfiguration
                         .Create()
                         .UseAutofac()
                         .RegisterCommonComponents()
                         .UseLog4Net()
                         .UseJsonNet()
                         .RegisterUnhandledExceptionHandler()
                         .RegisterEQueueComponents()
                         .UseDeleteMessageByCountStrategy(10);
 }
예제 #2
0
        static void InitializeECommon()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .RegisterUnhandledExceptionHandler();

            _logger          = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Program).Name);
            _scheduleService = ObjectContainer.Resolve <IScheduleService>();
        }
예제 #3
0
 static void InitializeEQueue()
 {
     var configuration = ECommonConfiguration
                         .Create()
                         .UseAutofac()
                         .RegisterCommonComponents()
                         .UseLog4Net()
                         .UseJsonNet()
                         .RegisterUnhandledExceptionHandler()
                         .RegisterEQueueComponents()
                         .BuildContainer();
 }
예제 #4
0
 private static void InitializeECommon()
 {
     _ecommonConfiguration = ECommonConfiguration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseLog4Net()
                             .UseJsonNet()
                             .RegisterUnhandledExceptionHandler();
     _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Bootstrap).FullName);
     _logger.Info("ECommon initialized.");
 }
예제 #5
0
        private void InitializeENode(
            bool useMockEventStore                    = false,
            bool useMockPublishedVersionStore         = false,
            bool useMockDomainEventPublisher          = false,
            bool useMockApplicationMessagePublisher   = false,
            bool useMockPublishableExceptionPublisher = false)
        {
            var connectionString = ConfigurationManager.AppSettings["connectionString"];
            var assemblies       = new[]
            {
                Assembly.GetExecutingAssembly()
            };

            _enodeConfiguration = ECommonConfiguration
                                  .Create()
                                  .UseAutofac()
                                  .RegisterCommonComponents()
                                  .UseLog4Net()
                                  .UseJsonNet()
                                  .RegisterUnhandledExceptionHandler()
                                  .CreateENode()
                                  .RegisterENodeComponents()
                                  .UseEventStore(useMockEventStore)
                                  .UsePublishedVersionStore(useMockPublishedVersionStore)
                                  .RegisterBusinessComponents(assemblies)
                                  .InitializeEQueue()
                                  .UseEQueue(useMockDomainEventPublisher, useMockApplicationMessagePublisher, useMockPublishableExceptionPublisher)
                                  .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> >();
            _publishableExceptionPublisher = ObjectContainer.Resolve <IMessagePublisher <IPublishableException> >();
            _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(BaseTest));
            _logger.Info("----ENode initialized.");
        }
예제 #6
0
        static void Main(string[] args)
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseSerilog()
            .RegisterUnhandledExceptionHandler()
            .BuildContainer();

            new SocketRemotingServer().RegisterRequestHandler(100, new RequestHandler()).Start();
            Console.ReadLine();
        }
예제 #7
0
 private static void InitializeEqueue()
 {
     ECommonConfiguration.Create()
     .UseAutofac()
     .RegisterCommonComponents()
     .UseLog4Net()
     .UseJsonNet()
     .RegisterUnhandledExceptionHandler()
     .RegisterEQueueComponents()
     .UseDeleteMessageByCountStrategy(10)
     .SetDefault <IQueueSelector, QueueAverageSelector>()
     .BuildContainer();
 }
예제 #8
0
        /// <summary>
        /// 初始化 ECommon
        /// </summary>
        private static void InitializeECommon()
        {
            _ecommonConfiguration = ECommonConfiguration
                                    .Create()                   //创建一个ECommonConfiguration类的实例
                                    .UseAutofac()               //使用的是Autofac容器
                                    .RegisterCommonComponents() //把一些默认的组件注入到容器中
                                    .UseLog4Net()
                                    .UseJsonNet()
                                    .RegisterUnhandledExceptionHandler()
                                    .BuildContainer();//告诉框架要捕获未处理的异常,这样框架在发现有未处理的异常时,会尝试记录错误日志

            _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Bootstrap).FullName);
            _logger.Info("ECommon 初始化成功.");
        }
예제 #9
0
        static void Main(string[] args)
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .RegisterUnhandledExceptionHandler();

            _logger         = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Program).Name);
            _remotingServer = new SocketRemotingServer().Start();
            PushTestMessageToAllClients();
            Console.ReadLine();
        }
예제 #10
0
        public NettyTestBase()
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            var enode = ECommonConfiguration.Create()
                        .UseAutofac()
                        .RegisterCommonComponents()
                        .UseLog4Net()
                        .UseJsonNet()
                        .CreateENode(new ConfigurationSetting())
                        .RegisterBusinessComponents(assemblies)
                        .RegisterENodeComponents();

            enode.GetCommonConfiguration()
            .BuildContainer();
        }
예제 #11
0
        static void InitializeECommon()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .RegisterUnhandledExceptionHandler();

            _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Program).Name);
            var serverIP      = ConfigurationManager.AppSettings["ServerAddress"];
            var serverAddress = string.IsNullOrEmpty(serverIP) ? SocketUtils.GetLocalIPV4() : IPAddress.Parse(serverIP);

            _client = new SocketRemotingClient(new IPEndPoint(serverAddress, 5000)).Start();
            _client.RegisterRemotingServerMessageHandler(100, new RemotingServerMessageHandler());
        }
예제 #12
0
파일: Program.cs 프로젝트: xw328907/equeue
        static void InitializeEQueue()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .UseJsonNet()
            .RegisterUnhandledExceptionHandler()
            .RegisterEQueueComponents()
            .SetDefault <IQueueSelector, QueueAverageSelector>();

            _logger             = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Program).Name);
            _scheduleService    = ObjectContainer.Resolve <IScheduleService>();
            _rtStatisticService = ObjectContainer.Resolve <IRTStatisticService>();
        }
예제 #13
0
        static void InitializeENodeFramework()
        {
            var setting = new ConfigurationSetting(ConfigurationManager.AppSettings["connectionString"]);

            _configuration = ECommonConfiguration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseLog4Net()
                             .UseJsonNet()
                             .RegisterUnhandledExceptionHandler()
                             .CreateENode(setting)
                             .RegisterENodeComponents()
                             .UseSqlServerEventStore();

            Console.WriteLine("ENode started...");
        }
예제 #14
0
파일: Program.cs 프로젝트: zquans/equeue
        static void InitializeEQueue()
        {
            var configuration = ECommonConfiguration
                                .Create()
                                .UseAutofac()
                                .RegisterCommonComponents()
                                .UseLog4Net()
                                .UseJsonNet()
                                .RegisterUnhandledExceptionHandler()
                                .RegisterEQueueComponents();

            BrokerController.Create(new BrokerSetting(false, ConfigurationManager.AppSettings["fileStoreRootPath"], enableCache: false, syncFlush: bool.Parse(ConfigurationManager.AppSettings["syncFlush"])));

            _messageStore       = ObjectContainer.Resolve <IMessageStore>();
            _performanceService = ObjectContainer.Resolve <IPerformanceService>();
            _performanceService.Initialize("StoreMessage").Start();
            _messageStore.Load();
            _messageStore.Start();
        }
예제 #15
0
        private void Initialize()
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            var enode = ECommonConfiguration.Create()
                        .UseAutofac()
                        .RegisterCommonComponents()
                        .UseLog4Net()
                        .UseJsonNet()
                        .CreateENode(new ConfigurationSetting())
                        .RegisterBusinessComponents(assemblies)
                        .RegisterENodeComponents()
                        .UseMongoDbAggregateSnapshotter();

            enode.GetCommonConfiguration()
            .BuildContainer();

            enode.InitializeBusinessAssemblies(assemblies)
            .InitializeMongoDbAggregateSnapshotter(_mongoDbConfiguration);
        }
예제 #16
0
파일: Bootstrap.cs 프로젝트: hsb0307/forum
        private static void InitializeEQueue()
        {
            _ecommonConfiguration = ECommonConfiguration
                                    .Create()
                                    .UseAutofac()
                                    .RegisterCommonComponents()
                                    .UseLog4Net()
                                    .UseJsonNet()
                                    .RegisterUnhandledExceptionHandler()
                                    .RegisterEQueueComponents()
                                    .BuildContainer();
            ConfigSettings.Initialize();
            var setting = new NameServerSetting()
            {
                BindingAddress = new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort)
            };

            _nameServer = new NameServerController(setting);
            ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Bootstrap).FullName).Info("NameServer initialized.");
        }
예제 #17
0
        static void InitializeEQueue()
        {
            var configuration = ECommonConfiguration
                                .Create()
                                .UseAutofac()
                                .RegisterCommonComponents()
                                .UseLog4Net()
                                .UseJsonNet()
                                .RegisterUnhandledExceptionHandler()
                                .RegisterEQueueComponents();

            BrokerController.Create(new BrokerSetting(ConfigurationManager.AppSettings["fileStoreRootPath"], enableCache: false));

            _messageStore    = ObjectContainer.Resolve <IMessageStore>();
            _scheduleService = ObjectContainer.Resolve <IScheduleService>();
            _logger          = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Program).Name);

            _messageStore.Load();
            _messageStore.Start();
        }
예제 #18
0
        static void InitializeEQueue()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .UseJsonNet()
            .RegisterUnhandledExceptionHandler()
            .RegisterEQueueComponents()
            .BuildContainer();

            var clusterName       = ConfigurationManager.AppSettings["ClusterName"];
            var consumerName      = ConfigurationManager.AppSettings["ConsumerName"];
            var consumerGroup     = ConfigurationManager.AppSettings["ConsumerGroup"];
            var address           = ConfigurationManager.AppSettings["NameServerAddress"];
            var topic             = ConfigurationManager.AppSettings["Topic"];
            var nameServerAddress = string.IsNullOrEmpty(address) ? SocketUtils.GetLocalIPV4() : IPAddress.Parse(address);
            var clientCount       = int.Parse(ConfigurationManager.AppSettings["ClientCount"]);

            var setting = new ConsumerSetting
            {
                ClusterName       = clusterName,
                ConsumeFromWhere  = ConsumeFromWhere.FirstOffset,
                MessageHandleMode = MessageHandleMode.Sequential,
                NameServerList    = new List <IPEndPoint> {
                    new IPEndPoint(nameServerAddress, 9493)
                }
            };
            var messageHandler = new MessageHandler();

            for (var i = 1; i <= clientCount; i++)
            {
                new Consumer(consumerGroup, setting, consumerName)
                .Subscribe(topic)
                .SetMessageHandler(messageHandler)
                .Start();
            }
        }
예제 #19
0
        private void Initialize()
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            var enode = ECommonConfiguration.Create()
                        .UseAutofac()
                        .RegisterCommonComponents()
                        .UseLog4Net()
                        .UseJsonNet()
                        .CreateENode(new ConfigurationSetting())
                        .RegisterBusinessComponents(assemblies)
                        .RegisterENodeComponents()
                        .UseMySqlAggregateSnapshotter();

            enode.GetCommonConfiguration()
            .BuildContainer();

            enode.InitializeBusinessAssemblies(assemblies)
            .InitializeMySqlAggregateSnapshotter(
                "Datasource=mysql;Database=eventstore;uid=root;pwd=admin!@#;Allow User Variables=True;AutoEnlist=false;"
                );
        }
예제 #20
0
        public MongoDbEventStore_Tests()
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            var enode = ECommonConfiguration.Create()
                        .UseAutofac()
                        .RegisterCommonComponents()
                        .UseLog4Net()
                        .UseJsonNet()
                        .CreateENode(new ConfigurationSetting())
                        .RegisterBusinessComponents(assemblies)
                        .RegisterENodeComponents()
                        .UseMongoDbEventStore();

            enode.GetCommonConfiguration()
            .BuildContainer();

            enode.InitializeBusinessAssemblies(assemblies)
            .InitializeMongoDbEventStore(_mongoDbConfiguration);

            _store = ObjectContainer.Resolve <IEventStore>();
        }
예제 #21
0
        public RedisLockService_Tests()
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            var enode = ECommonConfiguration.Create()
                        .UseAutofac()
                        .RegisterCommonComponents()
                        .UseLog4Net()
                        .UseJsonNet()
                        .CreateENode(new ConfigurationSetting())
                        .RegisterBusinessComponents(assemblies)
                        .RegisterENodeComponents()
                        .UseRedisLockService();

            enode.GetCommonConfiguration()
            .BuildContainer();

            enode.InitializeBusinessAssemblies(assemblies)
            .InitializeRedisLockService(_redisOptions);

            _lockService = ObjectContainer.Resolve <ILockService>();
        }
예제 #22
0
        private static void Main(string[] args)
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            var enode = ECommonConfiguration.Create()
                        .UseAutofac()
                        .RegisterCommonComponents()
                        .UseLog4Net()
                        .UseJsonNet()
                        .CreateENode(new ConfigurationSetting())
                        .RegisterBusinessComponents(assemblies)
                        .RegisterENodeComponents()
                        .UseRedisLockService();

            enode.GetCommonConfiguration()
            .BuildContainer();

            enode.InitializeBusinessAssemblies(assemblies)
            .InitializeRedisLockService(_redisOptions);

            _lockService = ObjectContainer.Resolve <ILockService>();

            var dic   = new Dictionary <int, int>();
            var tasks = new List <Task>();

            for (int i = 0; i < 400; i++)
            {
                tasks.Add(
                    _lockService.ExecuteInLockAsync("test", t =>
                {
                    dic.Add((int)t, System.Threading.Thread.CurrentThread.GetHashCode());
                }, i));
            }

            Task.WaitAll(tasks.ToArray());

            Console.ReadKey();
        }
예제 #23
0
        private static void InitializeENodeFramework()
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            _configuration = ECommonConfiguration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseLog4Net()
                             .UseJsonNet()
                             .RegisterUnhandledExceptionHandler()
                             .CreateENode()
                             .RegisterENodeComponents()
                             .UseMongoDbEventStore();

            _configuration.GetCommonConfiguration()
            .BuildContainer();

            _configuration.InitializeBusinessAssemblies(assemblies)
            .InitializeMongoDbEventStore(_mongoDbConfiguration);

            Console.WriteLine("ENode started...");
        }
예제 #24
0
        public static Configuration UseEQueue(this Configuration configuration, string brokerAddress,
                                              int producerPort = 5000, int consumerPort = 5001, int adminPort = 5002)
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .UseJsonNet()
            .RegisterUnhandledExceptionHandler()
            .RegisterEQueueComponents()
            .UseDeleteMessageByCountStrategy(10);


            IoCFactory.Instance.CurrentContainer
            .RegisterType <IMessageQueueClient, EQueueClient>(Lifetime.Singleton,
                                                              new ConstructInjection(new ParameterInjection("brokerAddress", brokerAddress),
                                                                                     new ParameterInjection("producerPort", producerPort),
                                                                                     new ParameterInjection("consumerPort", consumerPort),
                                                                                     new ParameterInjection("adminPort", adminPort)));

            return(configuration);
        }
예제 #25
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...");
        }
예제 #26
0
        static void InitializeENodeFramework()
        {
            var assemblies = new[]
            {
                Assembly.Load("NoteSample.Domain"),
                Assembly.Load("NoteSample.Commands"),
                Assembly.Load("NoteSample.CommandHandlers"),
                Assembly.GetExecutingAssembly()
            };

            _configuration = ECommonConfiguration
                             .Create()
                             .UseAutofac()
                             .RegisterCommonComponents()
                             .UseLog4Net()
                             .UseJsonNet()
                             .RegisterUnhandledExceptionHandler()
                             .CreateENode()
                             .RegisterENodeComponents()
                             .RegisterBusinessComponents(assemblies)
                             .InitializeBusinessAssemblies(assemblies);

            Console.WriteLine("ENode started...");
        }
예제 #27
0
        static void WriteChunkPerfTest()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .RegisterUnhandledExceptionHandler()
            .BuildContainer();

            var         storeRootPath = ConfigurationManager.AppSettings["storeRootPath"];                                 //文件存储根目录
            var         threadCount   = int.Parse(ConfigurationManager.AppSettings["concurrentThreadCount"]);              //并行写数据的线程数
            var         recordSize    = int.Parse(ConfigurationManager.AppSettings["recordSize"]);                         //记录大小,字节为单位
            var         recordCount   = int.Parse(ConfigurationManager.AppSettings["recordCount"]);                        //总共要写入的记录数
            var         syncFlush     = bool.Parse(ConfigurationManager.AppSettings["syncFlush"]);                         //是否同步刷盘
            FlushOption flushOption;

            Enum.TryParse(ConfigurationManager.AppSettings["flushOption"], out flushOption);                                //同步刷盘方式
            var chunkSize          = 1024 * 1024 * 1024;
            var flushInterval      = 100;
            var maxRecordSize      = 5 * 1024 * 1024;
            var chunkWriteBuffer   = 128 * 1024;
            var chunkReadBuffer    = 128 * 1024;
            var chunkManagerConfig = new ChunkManagerConfig(
                Path.Combine(storeRootPath, @"sample-chunks"),
                new DefaultFileNamingStrategy("message-chunk-"),
                chunkSize,
                0,
                0,
                flushInterval,
                false,
                syncFlush,
                flushOption,
                Environment.ProcessorCount * 8,
                maxRecordSize,
                chunkWriteBuffer,
                chunkReadBuffer,
                5,
                1,
                1,
                5,
                10 * 10000,
                true);
            var chunkManager = new ChunkManager("sample-chunk", chunkManagerConfig, false);
            var chunkWriter  = new ChunkWriter(chunkManager);

            chunkManager.Load(ReadRecord);
            chunkWriter.Open();
            var record = new BufferLogRecord
            {
                RecordBuffer = new byte[recordSize]
            };
            var count = 0L;
            var performanceService = ObjectContainer.Resolve <IPerformanceService>();

            performanceService.Initialize("WriteChunk").Start();

            for (var i = 0; i < threadCount; i++)
            {
                Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        var current = Interlocked.Increment(ref count);
                        if (current > recordCount)
                        {
                            break;
                        }
                        var start = DateTime.Now;
                        chunkWriter.Write(record);
                        performanceService.IncrementKeyCount("default", (DateTime.Now - start).TotalMilliseconds);
                    }
                });
            }

            Console.ReadLine();

            chunkWriter.Close();
            chunkManager.Close();
        }
예제 #28
0
        private void InitializeKafka(
            bool useMockEventStore                    = false,
            bool useMockPublishedVersionStore         = false,
            bool useMockDomainEventPublisher          = false,
            bool useMockApplicationMessagePublisher   = false,
            bool useMockPublishableExceptionPublisher = false)
        {
            var brokerAddresses = Root["Kafka:BrokerAddresses"];

            var assemblies = new[]
            {
                Assembly.GetExecutingAssembly()
            };

            _enodeConfiguration = ECommonConfiguration
                                  .Create()
                                  .UseAutofac()
                                  .RegisterCommonComponents()
                                  .UseLog4Net()
                                  .UseJsonNet()
                                  .RegisterUnhandledExceptionHandler()
                                  .CreateENode()
                                  .RegisterENodeComponents()
                                  .UseEventStore(useMockEventStore)
                                  .UsePublishedVersionStore(useMockPublishedVersionStore)
                                  .UseAggregateSnapshot(useMockPublishedVersionStore)
                                  .RegisterBusinessComponents(assemblies)
                                  .InitializeKafka(GetIPEndPointFromAddresses(brokerAddresses))
                                  .UseKafka(useMockDomainEventPublisher, useMockApplicationMessagePublisher, useMockPublishableExceptionPublisher)
                                  .BuildContainer();

            var eventStoreConnectionString = Root["ENode:EventStoreConnectionString"];
            var eventStoreDatabase         = Root["ENode:EventStoreDatabaseName"];

            if (!useMockEventStore)
            {
                _enodeConfiguration.InitializeMongoDbEventStore(new MongoDbConfiguration()
                {
                    ConnectionString = eventStoreConnectionString,
                    DatabaseName     = eventStoreDatabase
                });
            }
            if (!useMockPublishedVersionStore)
            {
                _enodeConfiguration.InitializeMongoDbPublishedVersionStore(new MongoDbConfiguration()
                {
                    ConnectionString = eventStoreConnectionString,
                    DatabaseName     = eventStoreDatabase
                });

                _enodeConfiguration.InitializeMongoDbAggregateSnapshotter(new MongoDbConfiguration()
                {
                    ConnectionString = eventStoreConnectionString,
                    DatabaseName     = eventStoreDatabase
                });
            }

            var strBrokerAddresses = Root["Kafka:BrokerAddresses"];
            var ipEndPoints        = new List <IPEndPoint>();
            var addressList        = strBrokerAddresses.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var address in addressList)
            {
                var array    = address.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                var endpoint = SocketUtils.GetIPEndPointFromHostName(array[0], int.Parse(array[1]));
                ipEndPoints.Add(endpoint);
            }
            _enodeConfiguration
            .InitializeBusinessAssemblies(assemblies)
            .StartKafka()
            .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> >();
            _publishableExceptionPublisher = ObjectContainer.Resolve <IMessagePublisher <IPublishableException> >();
            _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(BaseTest));
            _logger.Info("----ENode initialized.");
        }
예제 #29
0
        static void AddAggregateEventTest()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .RegisterUnhandledExceptionHandler()
            .RegisterEStoreComponents()
            .BuildContainer();

            var chunkFileStoreRootPath = @"d:\event-store";
            var eventDataChunkDataSize = 256 * 1024 * 1024;
            var indexChunkDataSize     = 256 * 1024 * 1024;
            var chunkFlushInterval     = 100;
            var chunkCacheMaxCount     = 15;
            var chunkCacheMinCount     = 15;
            var maxDataLogRecordSize   = 5 * 1024 * 1024;
            var maxIndexLogRecordSize  = 5 * 1024 * 1024;
            var chunkWriteBuffer       = 128 * 1024;
            var chunkReadBuffer        = 128 * 1024;
            var syncFlush           = false;
            var flushOption         = FlushOption.FlushToOS;
            var enableCache         = true;
            var preCacheChunkCount  = 10;
            var chunkLocalCacheSize = 300000;

            var eventDataChunkConfig = new ChunkManagerConfig(
                Path.Combine(chunkFileStoreRootPath, "event-data-chunks"),
                new DefaultFileNamingStrategy("event-data-chunk-"),
                eventDataChunkDataSize,
                0,
                0,
                chunkFlushInterval,
                enableCache,
                syncFlush,
                flushOption,
                Environment.ProcessorCount * 8,
                maxDataLogRecordSize,
                chunkWriteBuffer,
                chunkReadBuffer,
                chunkCacheMaxCount,
                chunkCacheMinCount,
                preCacheChunkCount,
                5,
                chunkLocalCacheSize,
                true);
            var eventIndexChunkConfig = new ChunkManagerConfig(
                Path.Combine(chunkFileStoreRootPath, "event-index-chunks"),
                new DefaultFileNamingStrategy("event-index-chunk-"),
                indexChunkDataSize,
                0,
                0,
                chunkFlushInterval,
                enableCache,
                syncFlush,
                flushOption,
                Environment.ProcessorCount * 8,
                maxIndexLogRecordSize,
                chunkWriteBuffer,
                chunkReadBuffer,
                chunkCacheMaxCount,
                chunkCacheMinCount,
                preCacheChunkCount,
                5,
                chunkLocalCacheSize,
                true);
            var commandIndexChunkConfig = new ChunkManagerConfig(
                Path.Combine(chunkFileStoreRootPath, "command-index-chunks"),
                new DefaultFileNamingStrategy("command-index-chunk-"),
                indexChunkDataSize,
                0,
                0,
                chunkFlushInterval,
                enableCache,
                syncFlush,
                flushOption,
                Environment.ProcessorCount * 8,
                maxIndexLogRecordSize,
                chunkWriteBuffer,
                chunkReadBuffer,
                chunkCacheMaxCount,
                chunkCacheMinCount,
                preCacheChunkCount,
                5,
                chunkLocalCacheSize,
                true);

            var eventStore = ObjectContainer.Resolve <IEventStore>() as DefaultEventStore;

            eventStore.Init(eventDataChunkConfig, eventIndexChunkConfig, commandIndexChunkConfig);
            eventStore.Start();

            var eventStream = new TestEventStream
            {
                AggregateRootId   = ObjectId.GenerateNewStringId(),
                AggregateRootType = "Note",
                Events            = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
                Timestamp         = DateTime.UtcNow.Ticks
            };

            var totalCount         = 10000000;
            var count              = 0;
            var performanceService = ObjectContainer.Resolve <IPerformanceService>();

            performanceService.Initialize("WriteChunk").Start();

            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    try
                    {
                        var current = Interlocked.Increment(ref count);
                        if (current > totalCount)
                        {
                            break;
                        }
                        var start             = DateTime.Now;
                        eventStream.Version   = current;
                        eventStream.CommandId = ObjectId.GenerateNewStringId();
                        eventStream.CommandCreateTimestamp = DateTime.Now.Ticks;
                        eventStore.AppendEventStream(eventStream);
                        performanceService.IncrementKeyCount("default", (DateTime.Now - start).TotalMilliseconds);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            });

            Console.ReadLine();
            eventStore.Stop();
        }
예제 #30
0
        static void AddAggregateEventTest()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .RegisterUnhandledExceptionHandler()
            .RegisterEStoreComponents()
            .BuildContainer();

            var eventStore = InitEventStore();

            var totalCount         = 100000000;
            var index              = 0;
            var performanceService = ObjectContainer.Resolve <IPerformanceService>();

            performanceService.Initialize("WriteChunk").Start();
            var aggregateRootId   = ObjectId.GenerateNewStringId();
            var aggregateRootType = "Note";
            var events            = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";

            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    try
                    {
                        var start           = DateTime.Now;
                        var currentVersion  = 0;
                        var eventStreamList = new List <IEventStream>();
                        for (var i = 0; i < 5; i++)
                        {
                            currentVersion  = Interlocked.Increment(ref index);
                            var eventStream = new TestEventStream
                            {
                                AggregateRootId        = aggregateRootId,
                                AggregateRootType      = aggregateRootType,
                                Events                 = events,
                                Timestamp              = DateTime.UtcNow.Ticks,
                                Version                = currentVersion,
                                CommandId              = ObjectId.GenerateNewStringId(),
                                CommandCreateTimestamp = DateTime.Now.Ticks
                            };
                            eventStreamList.Add(eventStream);
                            performanceService.IncrementKeyCount("default", (DateTime.Now - start).TotalMilliseconds);
                        }
                        eventStore.AppendEventStreams(eventStreamList);
                        if (index > totalCount)
                        {
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            });

            Console.ReadLine();
            eventStore.Stop();
        }