private void HandleRequestStartEvent(MediatrEventData @event)
        {
            try {
                var transaction             = _apmAgent.Tracer.CurrentTransaction;
                var currentExecutionSegment = _apmAgent.Tracer.CurrentSpan ?? (IExecutionSegment)transaction;
                var span = currentExecutionSegment.StartSpan(
                    @event.RequestType.Name,
                    "MediatR",
                    @event.RequestSubType);

                if (!_processingQueries.TryAdd(@event.RequestGuid, span))
                {
                    return;
                }

                span.Action     = @event.RequestSubType == "Query" ? ApiConstants.ActionQuery : ApiConstants.ActionExec;
                span.Context.Db = new Database {
                    Statement = @event.Payload,
                    Type      = "MediatR"
                };
            }
            catch (Exception e) {
                //ignore
                _apmLogger.Log(LogLevel.Error, "Exception was thrown while handling 'request started event''", e, null);
            }
        }
 private void HandleRequestCompletedEvent(MediatrEventData @event)
 {
     try {
         if (!_processingQueries.TryRemove(@event.RequestGuid, out var span))
         {
             return;
         }
         span.Duration = @event.TotalMilliseconds;
         span.End();
     }
     catch (Exception ex) {
         // ignore
         _apmLogger.Log(LogLevel.Error, "Exception was thrown while handling 'request succeeded event''", ex,
                        null);
     }
 }