Пример #1
0
 public static ENodeConfiguration UseAggregateSnapshotter(this ENodeConfiguration eNodeConfiguration)
 {
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotConfiguration, AggregateSnapshotConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotSerializer, JsonAggregateSnapshotSerializer>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotter, DefaultAggregateSnapshotter>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotSaver, DefaultAggregateSnapshotSaver>();
     return(eNodeConfiguration);
 }
 /// <summary>
 /// Use the MongoDbEventStore as the IEventStore.
 /// </summary>
 /// <returns></returns>
 public static ENodeConfiguration UseMongoDbEventStore(this ENodeConfiguration eNodeConfiguration)
 {
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IEventStreamMongoDbConfiguration, EventStreamMongoDbConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IEventStreamMongoDbProvider, EventStreamMongoDbProvider>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IEventStreamCollectionConfiguration, EventStreamCollectionConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IEventStreamCollection, EventStreamCollection>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IEventStore, MongoDbEventStore>();
     return(eNodeConfiguration);
 }
        /// <summary>
        /// Use the MySqlAggregateSnapshotter as the IAggregateSnapshotter.
        /// </summary>
        public static ENodeConfiguration UseMySqlAggregateSnapshotter(this ENodeConfiguration eNodeConfiguration)
        {
            eNodeConfiguration.UseAggregateSnapshotter();

            eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotMySqlConfiguration, SnapshotMySqlConfiguration>();
            eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotRepository, SnapshotRepository>();
            eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotStore, MySqlAggregateSnapshotStore>();
            return(eNodeConfiguration);
        }
 /// <summary>
 /// Use the MongoDbPublishedVersionStore as the IPublishedVersionStore.
 /// </summary>
 /// <returns></returns>
 public static ENodeConfiguration UseMongoDbPublishedVersionStore(this ENodeConfiguration eNodeConfiguration)
 {
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IPublishedVersionMongoDbConfiguration, PublishedVersionMongoDbConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IPublishedVersionMongoDbProvider, PublishedVersionMongoDbProvider>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IPublishedVersionCollectionConfiguration, PublishedVersionCollectionConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IPublishedVersionCollection, PublishedVersionCollection>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IPublishedVersionStore, MongoDbPublishedVersionStore>();
     return(eNodeConfiguration);
 }
        /// <summary>
        /// Use the MongoDbAggregateSnapshotter as the IAggregateSnapshotter.
        /// </summary>
        /// <returns></returns>
        public static ENodeConfiguration UseMongoDbAggregateSnapshotter(this ENodeConfiguration eNodeConfiguration)
        {
            eNodeConfiguration.UseAggregateSnapshotter();

            eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotMongoDbConfiguration, SnapshotMongoDbConfiguration>();
            eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotMongoDbProvider, SnapshotMongoDbProvider>();
            eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotCollectionConfiguration, SnapshotCollectionConfiguration>();
            eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotCollection, SnapshotCollection>();
            eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotStore, MongoDbAggregateSnapshotStore>();
            return(eNodeConfiguration);
        }
Пример #6
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            _broker = new BrokerController();

            _commandResultProcessor      = new CommandResultProcessor();
            _commandService              = new CommandService(_commandResultProcessor);
            _applicationMessagePublisher = new ApplicationMessagePublisher();
            _domainEventPublisher        = new DomainEventPublisher();
            _exceptionPublisher          = new PublishableExceptionPublisher();

            configuration.SetDefault <ICommandService, CommandService>(_commandService);
            configuration.SetDefault <IMessagePublisher <IApplicationMessage>, ApplicationMessagePublisher>(_applicationMessagePublisher);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_domainEventPublisher);
            configuration.SetDefault <IMessagePublisher <IPublishableException>, PublishableExceptionPublisher>(_exceptionPublisher);

            _commandConsumer            = new CommandConsumer().Subscribe("BankTransferCommandTopic");
            _applicationMessageConsumer = new ApplicationMessageConsumer().Subscribe("BankTransferApplicationMessageTopic");
            _eventConsumer     = new DomainEventConsumer().Subscribe("BankTransferEventTopic");
            _exceptionConsumer = new PublishableExceptionConsumer().Subscribe("BankTransferExceptionTopic");

            return(enodeConfiguration);
        }
Пример #7
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            _broker = new BrokerController();
            _commandResultProcessor = new CommandResultProcessor();
            _commandService         = new CommandService(_commandResultProcessor);
            _eventPublisher         = new DomainEventPublisher();

            configuration.SetDefault <ICommandService, CommandService>(_commandService);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_eventPublisher);

            _commandConsumer = new CommandConsumer();
            _eventConsumer   = new DomainEventConsumer();

            _commandConsumer
            .Subscribe("AccountCommandTopic")
            .Subscribe("SectionCommandTopic")
            .Subscribe("PostCommandTopic")
            .Subscribe("ReplyCommandTopic");
            _eventConsumer
            .Subscribe("AccountEventTopic")
            .Subscribe("SectionEventTopic")
            .Subscribe("PostEventTopic")
            .Subscribe("ReplyEventTopic");

            return(enodeConfiguration);
        }
Пример #8
0
        public static ENodeConfiguration StartEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var brokerStorePath = ConfigurationManager.AppSettings["equeue-store-path"];

            if (Directory.Exists(brokerStorePath))
            {
                Directory.Delete(brokerStorePath, true);
            }

            var configuration = enodeConfiguration.GetCommonConfiguration();

            _commandService.InitializeEQueue(new CommandResultProcessor().Initialize(new IPEndPoint(SocketUtils.GetLocalIPV4(), 9000)));
            _eventPublisher.InitializeEQueue();
            _commandConsumer = new CommandConsumer().InitializeEQueue().Subscribe("NoteCommandTopic");
            _eventConsumer   = new DomainEventConsumer().InitializeEQueue().Subscribe("NoteEventTopic");

            _nameServerController = new NameServerController();
            _broker = BrokerController.Create(new BrokerSetting(chunkFileStoreRootPath: brokerStorePath));

            _nameServerController.Start();
            _broker.Start();
            _eventConsumer.Start();
            _commandConsumer.Start();
            _eventPublisher.Start();
            _commandService.Start();

            WaitAllProducerTopicQueuesAvailable();
            WaitAllConsumerLoadBalanceComplete();

            return(enodeConfiguration);
        }
Пример #9
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            var producerSetting = new ProducerSetting
            {
                BrokerAddress      = new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.BrokerProducerPort),
                BrokerAdminAddress = new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.BrokerAdminPort)
            };
            var consumerSetting = new ConsumerSetting
            {
                BrokerAddress      = new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.BrokerConsumerPort),
                BrokerAdminAddress = new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.BrokerAdminPort)
            };

            _applicationMessagePublisher = new ApplicationMessagePublisher(producerSetting);
            _domainEventPublisher        = new DomainEventPublisher(producerSetting);
            _exceptionPublisher          = new PublishableExceptionPublisher(producerSetting);

            configuration.SetDefault <IMessagePublisher <IApplicationMessage>, ApplicationMessagePublisher>(_applicationMessagePublisher);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_domainEventPublisher);
            configuration.SetDefault <IMessagePublisher <IPublishableException>, PublishableExceptionPublisher>(_exceptionPublisher);

            _commandConsumer   = new CommandConsumer("ConferenceCommandConsumerGroup", consumerSetting).Subscribe(Topics.ConferenceCommandTopic);
            _eventConsumer     = new DomainEventConsumer("ConferenceEventConsumerGroup", consumerSetting).Subscribe(Topics.ConferenceDomainEventTopic);
            _exceptionConsumer = new PublishableExceptionConsumer("ConferenceExceptionConsumerGroup", consumerSetting).Subscribe(Topics.ConferenceExceptionTopic);

            return(enodeConfiguration);
        }
Пример #10
0
        public static ENodeConfiguration StartEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            _commandService.Initialize(new CommandResultProcessor().Initialize(new IPEndPoint(SocketUtils.GetLocalIPV4(), 9000)));
            _eventPublisher.Initialize();
            _commandConsumer = new CommandConsumer().Initialize().Subscribe("NoteCommandTopic");
            _eventConsumer = new DomainEventConsumer().Initialize().Subscribe("NoteEventTopic");

            var brokerStorePath = @"c:\equeue-store";
            if (Directory.Exists(brokerStorePath))
            {
                Directory.Delete(brokerStorePath, true);
            }

            _nameServerController = new NameServerController();
            _broker = BrokerController.Create();

            _nameServerController.Start();
            _broker.Start();
            _eventConsumer.Start();
            _commandConsumer.Start();
            _eventPublisher.Start();
            _commandService.Start();

            WaitAllConsumerLoadBalanceComplete();

            return enodeConfiguration;
        }
Пример #11
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration   = enodeConfiguration.GetCommonConfiguration();
            var brokerStorePath = @"d:\equeue-store";

            if (Directory.Exists(brokerStorePath))
            {
                Directory.Delete(brokerStorePath, true);
            }

            configuration.RegisterEQueueComponents();

            _broker = BrokerController.Create();

            _commandResultProcessor      = new CommandResultProcessor(new IPEndPoint(SocketUtils.GetLocalIPV4(), 9000));
            _commandService              = new CommandService(_commandResultProcessor);
            _applicationMessagePublisher = new ApplicationMessagePublisher();
            _domainEventPublisher        = new DomainEventPublisher();
            _exceptionPublisher          = new PublishableExceptionPublisher();

            configuration.SetDefault <ICommandService, CommandService>(_commandService);
            configuration.SetDefault <IMessagePublisher <IApplicationMessage>, ApplicationMessagePublisher>(_applicationMessagePublisher);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_domainEventPublisher);
            configuration.SetDefault <IMessagePublisher <IPublishableException>, PublishableExceptionPublisher>(_exceptionPublisher);

            _commandConsumer            = new CommandConsumer().Subscribe("BankTransferCommandTopic");
            _applicationMessageConsumer = new ApplicationMessageConsumer().Subscribe("BankTransferApplicationMessageTopic");
            _eventConsumer     = new DomainEventConsumer().Subscribe("BankTransferEventTopic");
            _exceptionConsumer = new PublishableExceptionConsumer().Subscribe("BankTransferExceptionTopic");

            return(enodeConfiguration);
        }
Пример #12
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            ConfigSettings.Initialize();

            var nameServerEndpoint  = new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort);
            var nameServerEndpoints = new List <IPEndPoint> {
                nameServerEndpoint
            };

            _commandService = new CommandService(setting: new ProducerSetting
            {
                NameServerList = nameServerEndpoints
            });
            configuration.SetDefault <ICommandService, CommandService>(_commandService);

            _eventConsumer = new DomainEventConsumer(setting: new ConsumerSetting
            {
                NameServerList = nameServerEndpoints
            });
            _eventConsumer
            .Subscribe("AccountEventTopic")
            .Subscribe("SectionEventTopic")
            .Subscribe("PostEventTopic")
            .Subscribe("ReplyEventTopic");

            return(enodeConfiguration);
        }
Пример #13
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            var nameServerEndpoint  = new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort);
            var nameServerEndpoints = new List <IPEndPoint> {
                nameServerEndpoint
            };

            _eventPublisher = new DomainEventPublisher(new ProducerSetting
            {
                NameServerList = nameServerEndpoints
            });
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_eventPublisher);

            _commandConsumer = new CommandConsumer(setting: new ConsumerSetting
            {
                NameServerList = nameServerEndpoints
            });
            _commandConsumer
            .Subscribe("AccountCommandTopic")
            .Subscribe("SectionCommandTopic")
            .Subscribe("PostCommandTopic")
            .Subscribe("ReplyCommandTopic");

            return(enodeConfiguration);
        }
Пример #14
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            var producerSetting = new ProducerSetting
            {
                NameServerList = new List <IPEndPoint> {
                    new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.NameServerPort)
                }
            };
            var consumerSetting = new ConsumerSetting
            {
                NameServerList = new List <IPEndPoint> {
                    new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.NameServerPort)
                }
            };

            _applicationMessagePublisher = new ApplicationMessagePublisher(producerSetting);
            _domainEventPublisher        = new DomainEventPublisher(producerSetting);

            configuration.SetDefault <IMessagePublisher <IApplicationMessage>, ApplicationMessagePublisher>(_applicationMessagePublisher);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_domainEventPublisher);

            _commandConsumer = new CommandConsumer("PaymentCommandConsumerGroup", consumerSetting).Subscribe(Topics.PaymentCommandTopic);
            _eventConsumer   = new DomainEventConsumer("PaymentEventConsumerGroup", consumerSetting).Subscribe(Topics.PaymentDomainEventTopic);

            return(enodeConfiguration);
        }
Пример #15
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration   = enodeConfiguration.GetCommonConfiguration();
            var brokerStorePath = @"c:\equeue-store";

            if (Directory.Exists(brokerStorePath))
            {
                Directory.Delete(brokerStorePath, true);
            }

            configuration.RegisterEQueueComponents();

            _nameServerController = new NameServerController();
            _broker = BrokerController.Create();

            _commandResultProcessor = new CommandResultProcessor(new IPEndPoint(SocketUtils.GetLocalIPV4(), 9000));
            _commandService         = new CommandService(_commandResultProcessor);
            _eventPublisher         = new DomainEventPublisher();

            configuration.SetDefault <ICommandService, CommandService>(_commandService);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_eventPublisher);

            //注意,这里实例化之前,需要确保各种MessagePublisher要先注入到IOC,因为CommandConsumer, DomainEventConsumer都依赖于IMessagePublisher<T>
            _commandConsumer = new CommandConsumer();
            _eventConsumer   = new DomainEventConsumer();

            _commandConsumer.Subscribe("NoteCommandTopic");
            _eventConsumer.Subscribe("NoteEventTopic");

            return(enodeConfiguration);
        }
Пример #16
0
        public static ENodeConfiguration UseRedisCache(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.SetDefault <ICacheManager, RedisCacheManager>(
                new RedisCacheManager(new RedisConnectionWrapper(DataConfigSettings.RedisServiceAddress)));
            return(enodeConfiguration);
        }
Пример #17
0
        public static ENodeConfiguration UseRedisCache(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.SetDefault <ICacheManager, RedisCacheManager>(
                new RedisCacheManager(new RedisConnectionWrapper("127.0.0.1:6379")));
            return(enodeConfiguration);
        }
Пример #18
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration   = enodeConfiguration.GetCommonConfiguration();
            var brokerStorePath = @"c:\person-equeue-store-test";

            if (Directory.Exists(brokerStorePath))
            {
                Directory.Delete(brokerStorePath, true);
            }

            configuration.RegisterEQueueComponents();

            var nameServerEndpoint  = new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort);
            var nameServerEndpoints = new List <IPEndPoint> {
                nameServerEndpoint
            };
            var nameServerSetting = new NameServerSetting()
            {
                BindingAddress = nameServerEndpoint
            };

            _nameServer = new NameServerController(nameServerSetting);

            var brokerSetting = new BrokerSetting(false, brokerStorePath);

            brokerSetting.NameServerList             = nameServerEndpoints;
            brokerSetting.BrokerInfo.ProducerAddress = new IPEndPoint(IPAddress.Loopback, ConfigSettings.BrokerProducerPort).ToAddress();
            brokerSetting.BrokerInfo.ConsumerAddress = new IPEndPoint(IPAddress.Loopback, ConfigSettings.BrokerConsumerPort).ToAddress();
            brokerSetting.BrokerInfo.AdminAddress    = new IPEndPoint(IPAddress.Loopback, ConfigSettings.BrokerAdminPort).ToAddress();
            _broker = BrokerController.Create(brokerSetting);

            var producerSetting = new ProducerSetting
            {
                NameServerList = new List <IPEndPoint> {
                    new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort)
                }
            };
            var consumerSetting = new ConsumerSetting
            {
                NameServerList = new List <IPEndPoint> {
                    new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort)
                }
            };

            _commandResultProcessor = new CommandResultProcessor(new IPEndPoint(IPAddress.Loopback, 9003));
            _commandService         = new CommandService(_commandResultProcessor, producerSetting);
            _eventPublisher         = new DomainEventPublisher(producerSetting);

            configuration.SetDefault <ICommandService, CommandService>(_commandService);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_eventPublisher);

            _commandConsumer = new CommandConsumer(setting: consumerSetting)
                               .Subscribe(Topics.PersonCommandTopic);
            _eventConsumer = new DomainEventConsumer(setting: consumerSetting)
                             .Subscribe(Topics.PersonDomainEventTopic);

            return(enodeConfiguration);
        }
Пример #19
0
        public static ENodeConfiguration UseNpgsqlAggregateSnapshotStore(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            enodeConfiguration.UseAggregateSnapshotStore <NpgsqlAggregateSnapshotStore>();
            configuration.SetDefault <IAggregateSnapshotRequestFilter, DefaultAggregateSnapshotRequestFilter>((string)null);
            configuration.SetDefault <IAggregateSnapshotRequestQueue, DefaultAggregateSnapshotRequestProcessor>((string)null);
            return(enodeConfiguration);
        }
Пример #20
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();
            _broker         = BrokerController.Create();
            _eventPublisher = new DomainEventPublisher();
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_eventPublisher);
            return(enodeConfiguration);
        }
Пример #21
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();
            _broker         = new BrokerController();
            _commandService = new CommandService();
            configuration.SetDefault <ICommandService, CommandService>(_commandService);
            return(enodeConfiguration);
        }
Пример #22
0
 /// <summary>
 /// Use the MongoDbAggregateSnapshotter as the IAggregateSnapshotter.
 /// </summary>
 /// <returns></returns>
 public static ENodeConfiguration UseMongoDbAggregateSnapshotter(this ENodeConfiguration eNodeConfiguration)
 {
     eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotMongoDbConfiguration, SnapshotMongoDbConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotMongoDbProvider, SnapshotMongoDbProvider>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotCollectionConfiguration, SnapshotCollectionConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <ISnapshotCollection, SnapshotCollection>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotConfiguration, AggregateSnapshotConfiguration>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotSerializer, JsonAggregateSnapshotSerializer>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <IAggregateSnapshotter, MongoDbAggregateSnapshotter>();
     eNodeConfiguration.GetCommonConfiguration().SetDefault <ISavableAggregateSnapshotter, SavableMongoDbAggregateSnapshotter>();
     return(eNodeConfiguration);
 }
        public static ENodeConfiguration UseAggregateSnapshot(this ENodeConfiguration enodeConfiguration, bool useMockPublishedVersionStore = false)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            if (!useMockPublishedVersionStore)
            {
                enodeConfiguration.UseMongoDbAggregateSnapshotter();
            }
            return(enodeConfiguration);
        }
Пример #24
0
        /// <summary>
        /// Use AggregateSnapshotStore
        /// </summary>
        /// <typeparam name="TAggregateSnapshotStore"></typeparam>
        /// <param name="enodeConfiguration"></param>
        /// <returns></returns>
        public static ENodeConfiguration UseAggregateSnapshotStore <TAggregateSnapshotStore>(this ENodeConfiguration enodeConfiguration)
            where TAggregateSnapshotStore : class, IAggregateSnapshotStore
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.SetDefault <IAggregateSnapshotStore, TAggregateSnapshotStore>((string)null);
            configuration.SetDefault <IAggregateSnapshotSaver, DefaultAggregateSnapshotSaver>((string)null);
            configuration.SetDefault <IAggregateSnapshotter, DefaultAggregateSnapshotter>((string)null);
            return(enodeConfiguration);
        }
Пример #25
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };
            enodeConfiguration.RegisterTopicProviders(assemblies);

            var configuration = enodeConfiguration.GetCommonConfiguration();
            configuration.RegisterEQueueComponents();

            _eventPublisher = new DomainEventPublisher();
            configuration.SetDefault<IMessagePublisher<DomainEventStreamMessage>, DomainEventPublisher>(_eventPublisher);
            return enodeConfiguration;
        }
Пример #26
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            _commandService = new CommandService(new CommandResultProcessor(new IPEndPoint(SocketUtils.GetLocalIPV4(), 9000)));

            configuration.SetDefault <ICommandService, CommandService>(_commandService);

            return(enodeConfiguration);
        }
Пример #27
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            _commandService = new CommandService(new CommandResultProcessor());

            configuration.SetDefault <ICommandService, CommandService>(_commandService);

            return(enodeConfiguration);
        }
Пример #28
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            enodeConfiguration.RegisterTopicProviders(assemblies);

            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            return(enodeConfiguration);
        }
Пример #29
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();

            //生产者设置
            var producerSetting = new ProducerSetting
            {
                NameServerList = new List <IPEndPoint> {
                    new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.NameServerPort)
                }
            };
            //消费者设置
            var consumerSetting = new ConsumerSetting
            {
                NameServerList = new List <IPEndPoint> {
                    new IPEndPoint(SocketUtils.GetLocalIPV4(), ConfigSettings.NameServerPort)
                }
            };

            //命令生成者
            _commandService = new CommandService();
            _commandService.Initialize(setting: producerSetting);
            //事件生产者
            _domainEventPublisher = new DomainEventPublisher().Initialize(setting: producerSetting);
            //消息生产者
            _applicationMessagePublisher = new ApplicationMessagePublisher().Initialize(setting: producerSetting);
            //异常生产者
            _exceptionPublisher = new PublishableExceptionPublisher().Initialize(setting: producerSetting);

            configuration.SetDefault <ICommandService, CommandService>(_commandService);
            configuration.SetDefault <IMessagePublisher <DomainEventStreamMessage>, DomainEventPublisher>(_domainEventPublisher);
            configuration.SetDefault <IMessagePublisher <IApplicationMessage>, ApplicationMessagePublisher>(_applicationMessagePublisher);
            configuration.SetDefault <IMessagePublisher <IPublishableException>, PublishableExceptionPublisher>(_exceptionPublisher);

            //命令消费者
            _commandConsumer = new CommandConsumer().Initialize(setting: consumerSetting)
                               .Subscribe(Topics.ShopCommandTopic);
            //事件消费者
            _eventConsumer = new DomainEventConsumer().Initialize(setting: consumerSetting)
                             .Subscribe(Topics.ShopDomainEventTopic);

            //消息消费者
            _applicationMessageConsumer = new ApplicationMessageConsumer().Initialize(setting: consumerSetting)
                                          .Subscribe(Topics.ShopApplicationMessageTopic);
            //异常消费者
            _exceptionConsumer = new PublishableExceptionConsumer().Initialize(setting: consumerSetting)
                                 .Subscribe(Topics.ShopExceptionTopic);

            return(enodeConfiguration);
        }
Пример #30
0
        public static ENodeConfiguration UseKafka(this ENodeConfiguration enodeConfiguration)
        {
            var assemblies = new[] { Assembly.GetExecutingAssembly() };

            enodeConfiguration.RegisterTopicProviders(assemblies);

            var configuration = enodeConfiguration.GetCommonConfiguration();

            _commandService = new CommandService();
            configuration.SetDefault <ICommandService, CommandService>(_commandService);

            return(enodeConfiguration);
        }