Exemple #1
0
        public override void ActivateOptions()
        {
            base.ActivateOptions();
            _logEventStore = new LogEventStore(ConnectionString)
            {
                ErrorHandler = ErrorHandler
            };

            if (BufferSize > 0)
            {
                _logEventStore.MaxNumberOfRequestsPerSession = BufferSize;
            }
            if (SlidingFlush > 0)
            {
                _timer = new Timer()
                {
                    Enabled = true, AutoReset = true
                };
                SetTimerInterval();
                _timer.Elapsed += OnElapsedCheckSlidingExpiration;
                _timer.Start();
            }
            Fix         = FixFlags.Partial;
            _readyToUse = true;
        }
        public void PublishAll(List <IntegrationEvent> @events)
        {
            if (@events.Count == 0)
            {
                return;
            }
            var env = AppConfigUtilities.GetAppConfig <string>("KAFKA_ENV");

            var publisher = Environment.MachineName;
            var eventName = @events.FirstOrDefault().GetType().Name;
            var kafkaUrl  = AppConfigUtilities.GetAppConfig <string>("KAFKA_URL");
            var config    = new ProducerConfig {
                BootstrapServers = kafkaUrl
            };
            var topic = env + eventName;
            var p     = new ProducerBuilder <string, string>(config).Build();
            List <(IntegrationEvent, long)> logs = new List <(IntegrationEvent, long)>();

            foreach (var item in @events)
            {
                if (item.AggregateId.IsNullOrEmpty())
                {
                    item.AggregateId = Guid.NewGuid().ToString();
                }
                var msg = new Message <string, string> {
                    Key = item.AggregateId, Value = item.ToJSON()
                };


                var result = p.ProduceAsync(topic, msg).Result;

                #region ----LOG ES----
                var l = new LogEventStore();
                l.AggregateId = item.AggregateId;
                l.CreateDate  = DateTime.Now.GetLocalDate();
                l.EventName   = env + item.GetType().Name;
                l.Val         = item.ToJSON();
                l.OffSet      = result.Offset;
                l.Publisher   = publisher;
                var msgLog = new Message <string, string> {
                    Key = l.AggregateId, Value = l.ToJSON()
                };
                var log = p.ProduceAsync("LogEventStore", msgLog).Result;

                #endregion

                logs.Add((item, result.Offset.Value));
            }
            _EventStore.PersistAll(logs);
        }
 public void Persist <TAggregate>(TAggregate aggregate) where TAggregate : IntegrationEvent
 {
     using (var scope = new TransactionScope(TransactionScopeOption.Suppress))
     {
         var env  = "Dev";
         var date = DateTime.Now;
         var val  = aggregate.ToJSON();
         var l    = new LogEventStore();
         l.AggregateId = aggregate.AggregateId;
         l.CreateDate  = DateTime.Now;
         l.EventName   = env + aggregate.GetType().Name;
         l.Val         = val;
         _db.LogEventStores.Add(l);
         _db.SaveChanges();
     }
 }
Exemple #4
0
        public void Persist <TAggregate>(TAggregate aggregate, long offset) where TAggregate : IntegrationEvent
        {
            var l = new LogEventStore();

            using (var scope = new TransactionScope(TransactionScopeOption.Suppress))
            {
                var publisher = Environment.MachineName;
                var env       = AppConfigUtilities.GetAppConfig <string>("KAFKA_ENV");
                var date      = DateTime.Now.GetLocalDate();
                var val       = aggregate.ToJSON();

                l.AggregateId = aggregate.AggregateId;
                l.CreateDate  = date;
                l.OffSet      = offset;
                l.Publisher   = publisher;
                l.EventName   = env + aggregate.GetType().Name;
                l.Val         = val;
                _db.LogEventStores.Add(l);
                _db.SaveChanges();
            }
            Publish(l, "LogEventStore");
        }