예제 #1
0
        public async Task Initialize(CancellationToken stopCancellationToken = default)
        {
            foreach (var vvv in config.GetSection("eventbus").GetChildren())
            {
                var             dependencyScope        = this.dependencyResolver.CreateScope();
                ConsumerSetting vconsumerConfiguration = new ConsumerSetting();

                var consumerWorkerPool = new ConsumerWorkerPool(
                    dependencyScope.Resolver,
                    vconsumerConfiguration,
                    this.logHandler
                    );
                var consumer = dependencyScope.Resolver.Resolve <IConsumerClient>("Kafka");
                consumer.Initialize(vconsumerConfiguration);

                //var consumer = new KafkaConsumer(
                //     vconsumerConfiguration,
                //     this.consumerManager,
                //     this.logHandler,
                //     consumerWorkerPool,
                //     stopCancellationToken);

                //this.consumers.Add(consumer);

                //await consumer.StartAsync().ConfigureAwait(false);

                // Console.WriteLine("Key = " + v.Key);
            }
            await Task.CompletedTask;
        }
예제 #2
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)
                }
            };

            _domainEventPublisher = new DomainEventPublisher(producerSetting);

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

            _commandService = new CommandService(null, producerSetting);

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

            _commandConsumer            = new CommandConsumer("RegistrationCommandConsumerGroup", consumerSetting).Subscribe(Topics.RegistrationCommandTopic);
            _eventConsumer              = new DomainEventConsumer("RegistrationEventConsumerGroup", consumerSetting).Subscribe(Topics.RegistrationDomainEventTopic);
            _applicationMessageConsumer = new ApplicationMessageConsumer("RegistrationMessageConsumerGroup", consumerSetting)
                                          .Subscribe(Topics.ConferenceApplicationMessageTopic)
                                          .Subscribe(Topics.PaymentApplicationMessageTopic);

            return(enodeConfiguration);
        }
예제 #3
0
        public static ENodeConfiguration UseEQueue(this ENodeConfiguration enodeConfiguration)
        {
            var configuration = enodeConfiguration.GetCommonConfiguration();

            configuration.RegisterEQueueComponents();
            var producerSetting = new ProducerSetting
            {
                BrokerAddress      = new IPEndPoint(ConfigSettings.BrokerAddress, ConfigSettings.BrokerProducerPort),
                BrokerAdminAddress = new IPEndPoint(ConfigSettings.BrokerAddress, ConfigSettings.BrokerAdminPort)
            };
            var consumerSetting = new ConsumerSetting
            {
                BrokerAddress      = new IPEndPoint(ConfigSettings.BrokerAddress, ConfigSettings.BrokerConsumerPort),
                BrokerAdminAddress = new IPEndPoint(ConfigSettings.BrokerAddress, 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("NCasCommandConsumerGroup", consumerSetting).Subscribe(Topics.NCasCommandTopic);
            _applicationMessageConsumer = new ApplicationMessageConsumer("NCasApplicationMessageConsumerGroup", consumerSetting).Subscribe(Topics.NCasApplicationMessageTopic);
            _eventConsumer     = new DomainEventConsumer("NCasEventConsumerGroup", consumerSetting).Subscribe(Topics.NCasDomainEventTopic);
            _exceptionConsumer = new PublishableExceptionConsumer("NCasExceptionConsumerGroup", consumerSetting).Subscribe(Topics.NCasExceptionTopic);

            return(enodeConfiguration);
        }
예제 #4
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);

            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);
        }
예제 #5
0
        static void InitializeEQueue()
        {
            ECommonConfiguration
            .Create()
            .UseAutofac()
            .RegisterCommonComponents()
            .UseLog4Net()
            .UseJsonNet()
            .RegisterUnhandledExceptionHandler()
            .RegisterEQueueComponents();

            var address       = ConfigurationManager.AppSettings["BrokerAddress"];
            var brokerAddress = string.IsNullOrEmpty(address) ? SocketUtils.GetLocalIPV4() : IPAddress.Parse(address);
            var clientCount   = int.Parse(ConfigurationManager.AppSettings["ClientCount"]);
            var setting       = new ConsumerSetting
            {
                ConsumeFromWhere   = ConsumeFromWhere.FirstOffset,
                MessageHandleMode  = MessageHandleMode.Parallel,
                BrokerAddress      = new IPEndPoint(brokerAddress, 5001),
                BrokerAdminAddress = new IPEndPoint(brokerAddress, 5002)
            };
            var messageHandler = new MessageHandler();

            for (var i = 1; i <= clientCount; i++)
            {
                new Consumer(ConfigurationManager.AppSettings["ConsumerGroup"], setting)
                .Subscribe(ConfigurationManager.AppSettings["Topic"])
                .SetMessageHandler(messageHandler)
                .Start();
            }
        }
예제 #6
0
        static void Main(string[] args)
        {
            using (var bootstrapper = new AbpBootstrapper())
            {
                bootstrapper.Initialize();

                var address       = ConfigurationManager.AppSettings["BrokerAddress"];
                var brokerAddress = string.IsNullOrEmpty(address) ? SocketUtils.GetLocalIPV4() : IPAddress.Parse(address);
                var clientCount   = int.Parse(ConfigurationManager.AppSettings["ClientCount"]);
                var setting       = new ConsumerSetting
                {
                    ConsumeFromWhere   = ConsumeFromWhere.FirstOffset,
                    MessageHandleMode  = MessageHandleMode.Parallel,
                    BrokerAddress      = new IPEndPoint(brokerAddress, 5001),
                    BrokerAdminAddress = new IPEndPoint(brokerAddress, 5002)
                };
                var messageHandler = new MessageHandler();
                for (var i = 1; i <= clientCount; i++)
                {
                    new BodeAbp.Queue.Clients.Consumers.Consumer(ConfigurationManager.AppSettings["ConsumerGroup"], setting)
                    .Subscribe(ConfigurationManager.AppSettings["Topic"])
                    .SetMessageHandler(messageHandler)
                    .Start();
                }
                Console.ReadLine();
            }
        }
예제 #7
0
        public static ENodeConfiguration StartEQueue(this ENodeConfiguration enodeConfiguration)
        {
            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)
                }
            };


            _domainEventPublisher.InitializeEQueue(producerSetting);
            _exceptionPublisher.InitializeEQueue(producerSetting);
            _applicationMessagePublisher.InitializeEQueue(producerSetting);

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

            _exceptionConsumer.Start();
            _eventConsumer.Start();
            _commandConsumer.Start();
            _applicationMessagePublisher.Start();
            _domainEventPublisher.Start();
            _exceptionPublisher.Start();

            return(enodeConfiguration);
        }
예제 #8
0
        public PublishableExceptionConsumer InitializeKafka(ConsumerSetting consumerSetting)
        {
            InitializeENode();

            Consumer = new Consumer(consumerSetting);

            return(this);
        }
예제 #9
0
        public DomainEventConsumer InitializeKafka(ConsumerSetting consumerSetting, bool sendEventHandledMessage = true)
        {
            InitializeENode(sendEventHandledMessage);

            Consumer = new Consumer(consumerSetting);

            return(this);
        }
        public ApplicationMessageConsumer InitializeKafka(ConsumerSetting consumerSetting)
        {
            InitializeENode();

            Consumer = new Consumer(consumerSetting);

            return(this);
        }
        public CommandConsumer InitializeKafka(ConsumerSetting consumerSetting)
        {
            InitializeENode();

            Consumer = new Consumer(consumerSetting);

            return(this);
        }
예제 #12
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);
        }
        public DomainExceptionConsumer InitializeKafka(ConsumerSetting setting)
        {
            InitializeENode();

            Consumer = new Consumer(setting);

            _topicsManager = new TopicsManager(setting.BootstrapServers);
            return(this);
        }
예제 #14
0
        public ApplicationMessageConsumer InitializeKafka(ConsumerSetting setting)
        {
            InitializeENode();

            Consumer = new Consumer(setting);

            _topicsManager = new TopicsManager(setting.BootstrapServers);
            return(this);
        }
예제 #15
0
        public DomainEventConsumer InitializeKafka(ConsumerSetting setting, bool sendEventHandledMessage = true)
        {
            InitializeENode(sendEventHandledMessage);

            Consumer = new Consumer(setting);

            _topicsManager = new TopicsManager(setting.BootstrapServers);
            return(this);
        }
예제 #16
0
 public CommandConsumer InitializeEQueue(string groupName = null, ConsumerSetting setting = null)
 {
     InitializeENode();
     Consumer = new Consumer(groupName ?? DefaultCommandConsumerGroup, setting ?? new ConsumerSetting
     {
         ConsumeFromWhere = ConsumeFromWhere.FirstOffset
     }, "CommandConsumer");
     return(this);
 }
예제 #17
0
 public ApplicationMessageConsumer(string groupName = null, ConsumerSetting setting = null)
 {
     _consumer = new Consumer(groupName ?? DefaultMessageConsumerGroup, setting ?? new ConsumerSetting
     {
         MessageHandleMode = MessageHandleMode.Sequential
     });
     _jsonSerializer   = ObjectContainer.Resolve <IJsonSerializer>();
     _processor        = ObjectContainer.Resolve <IMessageProcessor <ProcessingApplicationMessage, IApplicationMessage, bool> >();
     _typeCodeProvider = ObjectContainer.Resolve <ITypeCodeProvider>();
 }
예제 #18
0
 public PublishableExceptionConsumer(string groupName = null, ConsumerSetting setting = null)
 {
     _consumer = new Consumer(groupName ?? DefaultExceptionConsumerGroup, setting ?? new ConsumerSetting
     {
         MessageHandleMode = MessageHandleMode.Sequential
     });
     _jsonSerializer = ObjectContainer.Resolve <IJsonSerializer>();
     _publishableExceptionProcessor        = ObjectContainer.Resolve <IMessageProcessor <ProcessingPublishableExceptionMessage, IPublishableException, bool> >();
     _publishableExceptionTypeCodeProvider = ObjectContainer.Resolve <ITypeCodeProvider>();
 }
예제 #19
0
 public CommandConsumer(string groupName = null, ConsumerSetting setting = null)
 {
     _consumer         = new Consumer(groupName ?? DefaultCommandConsumerGroup, setting);
     _sendReplyService = new SendReplyService();
     _jsonSerializer   = ObjectContainer.Resolve <IJsonSerializer>();
     _typeNameProvider = ObjectContainer.Resolve <ITypeNameProvider>();
     _processor        = ObjectContainer.Resolve <IMessageProcessor <ProcessingCommand, ICommand, CommandResult> >();
     _repository       = ObjectContainer.Resolve <IRepository>();
     _logger           = ObjectContainer.Resolve <ILoggerFactory>().Create(GetType().FullName);
 }
예제 #20
0
 public ApplicationMessageConsumer InitializeEQueue(string groupName = null, ConsumerSetting setting = null)
 {
     InitializeENode();
     Consumer = new Consumer(groupName ?? DefaultMessageConsumerGroup, setting ?? new ConsumerSetting
     {
         MessageHandleMode = MessageHandleMode.Sequential,
         ConsumeFromWhere  = ConsumeFromWhere.FirstOffset
     }, "ApplicationMessageConsumer");
     return(this);
 }
예제 #21
0
 public DomainEventConsumer InitializeEQueue(string groupName = null, ConsumerSetting setting = null, bool sendEventHandledMessage = true)
 {
     InitializeENode(sendEventHandledMessage);
     Consumer = new Consumer(groupName ?? DefaultEventConsumerGroup, setting ?? new ConsumerSetting
     {
         MessageHandleMode = MessageHandleMode.Sequential,
         ConsumeFromWhere  = ConsumeFromWhere.FirstOffset
     }, "DomainEventConsumer");
     return(this);
 }
예제 #22
0
 public MessageConsumer(
     IConsumerClient consumerClient,
     IConsumerWorkerPool workerPool,
     ConsumerSetting configuration,
     ILogHandler logHandler)
 {
     this.workerPool     = workerPool;
     this.configuration  = configuration;
     this.logHandler     = logHandler;
     this.consumerClient = consumerClient;
 }
예제 #23
0
        public MessageConsumer(string id, ConsumerSetting consumerSetting, string groupName, string subscribeTopic)
            : this()
        {
            SubscribeTopic = subscribeTopic;
            Name           = id;
            _Logger        = IoCFactory.Resolve <ILoggerFactory>().Create(Name);

            Consumer = new Consumer(id, groupName, consumerSetting)
                       .Subscribe(subscribeTopic)
                       .SetMessageHandler(this);
        }
 public PublishableExceptionConsumer(string groupName = null, ConsumerSetting setting = null)
 {
     _consumer = new Consumer(groupName ?? DefaultExceptionConsumerGroup, setting ?? new ConsumerSetting
     {
         MessageHandleMode = MessageHandleMode.Sequential,
         ConsumeFromWhere  = ConsumeFromWhere.FirstOffset
     });
     _jsonSerializer = ObjectContainer.Resolve <IJsonSerializer>();
     _publishableExceptionProcessor = ObjectContainer.Resolve <IMessageProcessor <ProcessingPublishableExceptionMessage, IPublishableException> >();
     _typeNameProvider = ObjectContainer.Resolve <ITypeNameProvider>();
     _logger           = ObjectContainer.Resolve <ILoggerFactory>().Create(GetType().FullName);
 }
예제 #25
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);
        }
예제 #26
0
 public DomainEventConsumer(string groupName = null, ConsumerSetting setting = null, bool sendEventHandledMessage = true)
 {
     _consumer = new Consumer(groupName ?? DefaultEventConsumerGroup, setting ?? new ConsumerSetting
     {
         MessageHandleMode = MessageHandleMode.Sequential
     });
     _sendReplyService        = new SendReplyService();
     _jsonSerializer          = ObjectContainer.Resolve <IJsonSerializer>();
     _eventSerializer         = ObjectContainer.Resolve <IEventSerializer>();
     _processor               = ObjectContainer.Resolve <IMessageProcessor <ProcessingDomainEventStreamMessage, DomainEventStreamMessage, bool> >();
     _logger                  = ObjectContainer.Resolve <ILoggerFactory>().Create(GetType().FullName);
     _sendEventHandledMessage = sendEventHandledMessage;
 }
예제 #27
0
 public ApplicationMessageConsumer Initialize(string groupName = null, ConsumerSetting setting = null)
 {
     _consumer = new Consumer(groupName ?? DefaultMessageConsumerGroup, setting ?? new ConsumerSetting
     {
         MessageHandleMode = MessageHandleMode.Sequential,
         ConsumeFromWhere  = ConsumeFromWhere.FirstOffset
     });
     _jsonSerializer   = ObjectContainer.Resolve <IJsonSerializer>();
     _processor        = ObjectContainer.Resolve <IMessageProcessor <ProcessingApplicationMessage, IApplicationMessage> >();
     _typeNameProvider = ObjectContainer.Resolve <ITypeNameProvider>();
     _logger           = ObjectContainer.Resolve <ILoggerFactory>().Create(GetType().FullName);
     return(this);
 }
예제 #28
0
        public static ENodeConfiguration StartKafka(this ENodeConfiguration enodeConfiguration)
        {
            if (_isKafkaStarted)
            {
                _commandService.InitializeENode();
                _eventPublisher.InitializeENode();
                _applicationMessagePublisher.InitializeENode();
                _publishableExceptionPublisher.InitializeENode();

                _commandConsumer.InitializeENode();
                _eventConsumer.InitializeENode();
                _applicationMessageConsumer.InitializeENode();
                _publishableExceptionConsumer.InitializeENode();

                return(enodeConfiguration);
            }

            var produceSetting = new ProducerSetting()
            {
                BrokerEndPoints = _brokerEndPoints
            };

            _commandService.InitializeKafka(produceSetting, new CommandResultProcessor().Initialize(SocketUtils.GetLocalIPV4().ToString(), 9001));//Dns.GetHostName()
            _eventPublisher.InitializeKafka(produceSetting);
            _applicationMessagePublisher.InitializeKafka(produceSetting);
            _publishableExceptionPublisher.InitializeKafka(produceSetting);

            var consumerSetting = new ConsumerSetting()
            {
                BrokerEndPoints = _brokerEndPoints,
                CommitConsumerOffsetInterval = 100
            };

            _commandConsumer              = new CommandConsumer().InitializeKafka(consumerSetting).Subscribe("CommandTopic");
            _eventConsumer                = new DomainEventConsumer().InitializeKafka(consumerSetting).Subscribe("EventTopic");
            _applicationMessageConsumer   = new ApplicationMessageConsumer().InitializeKafka(consumerSetting).Subscribe("ApplicationMessageTopic");
            _publishableExceptionConsumer = new PublishableExceptionConsumer().InitializeKafka(consumerSetting).Subscribe("PublishableExceptionTopic");

            _eventConsumer.Start();
            _commandConsumer.Start();
            _applicationMessageConsumer.Start();
            _publishableExceptionConsumer.Start();
            _applicationMessagePublisher.Start();
            _publishableExceptionPublisher.Start();
            _eventPublisher.Start();
            _commandService.Start();

            _isKafkaStarted = true;

            return(enodeConfiguration);
        }
예제 #29
0
 public CommandConsumer(string groupName = null, ConsumerSetting setting = null)
 {
     _consumer = new Consumer(groupName ?? DefaultCommandConsumerGroup, setting ?? new ConsumerSetting
     {
         ConsumeFromWhere = ConsumeFromWhere.FirstOffset
     });
     _sendReplyService     = new SendReplyService();
     _jsonSerializer       = ObjectContainer.Resolve <IJsonSerializer>();
     _typeNameProvider     = ObjectContainer.Resolve <ITypeNameProvider>();
     _processor            = ObjectContainer.Resolve <ICommandProcessor>();
     _repository           = ObjectContainer.Resolve <IRepository>();
     _aggregateRootStorage = ObjectContainer.Resolve <IAggregateStorage>();
     _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(GetType().FullName);
 }
예제 #30
0
 public ConsumerWorker(
     IConsumerClient consumerClient,
     int workerId,
     ConsumerSetting configuration,
     IOffsetManager offsetManager,
     ILogHandler logHandler,
     IMiddlewareExecutor middlewareExecutor)
 {
     this.Id                 = workerId;
     this.consumerClient     = consumerClient;
     this.configuration      = configuration;
     this.offsetManager      = offsetManager;
     this.logHandler         = logHandler;
     this.middlewareExecutor = middlewareExecutor;
     this.messagesBuffer     = Channel.CreateBounded <IntermediateMessage>(configuration.BufferSize);
 }