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(); } }
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"); }