public async Task <ActionResult> Post() { var rng = new Random(); var forecast = new WeatherForecast { Id = Guid.NewGuid().ToString("N"), Date = DateTime.Now.AddDays(1), TemperatureC = rng.Next(-20, 55), Summary = Summaries[rng.Next(Summaries.Length)] }; const string collectionName = "weather"; // await _database.GetCollection<WeatherForecast>(collectionName).InsertOneAsync(forecast); #region Metrics await PrometheusMetrics.Measure( () => _database.GetCollection <WeatherForecast>(collectionName).InsertOneAsync(forecast), PrometheusMetrics.DbUpdateTimer(collectionName), PrometheusMetrics.DBUpdateErrorCounter(collectionName) ); #endregion Metrics return(Ok()); }
async Task EventAppeared( EventStoreCatchUpSubscription _, ResolvedEvent resolvedEvent) { if (resolvedEvent.Event.EventType.StartsWith("$")) { return; } var @event = resolvedEvent.Deserialze(); _log.Debug("Projecting event {event}", @event.ToString()); try { await PrometheusMetrics.Measure(async() => { await Task.WhenAll(_eventHandlers.Select(x => x(@event))); await _checkpointStore.StoreCheckpoint( resolvedEvent.OriginalPosition.Value ); }, PrometheusMetrics.SubscriptionTimer(_subscriptionName)); PrometheusMetrics.ObserveLeadTime( resolvedEvent.Event.EventType, resolvedEvent.Event.Created, _subscriptionName); } catch (Exception e) { _log.Error( e, "Error occured when projecting the event {event}", @event ); throw; } }