Пример #1
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.");
        }