public void Request(int i) { var multiContextMetrics = new MultiContextMetrics(_metrics); multiContextMetrics.Run(); for (var j = 0; j < 5; j++) { var multiContextInstanceMetrics = new MultiContextInstanceMetrics(_metrics); multiContextInstanceMetrics.Run(); } using (_timer.NewContext(i.ToString())) // measure until disposed { _someValue *= i + 1; // will be reflected in the gauge _concurrentRequestsCounter.Increment(); // increment concurrent requests counter _totalRequestsCounter.Increment(); // increment total requests counter _meter.Mark(); // signal a new request to the meter _histogramOfData.Update(new Random().Next(5000), "user-value-" + i); // update the histogram with the input data var item = "Item " + new Random().Next(5); _setCounter.Increment(item); _setMeter.Mark(item); // simulate doing some work var ms = Math.Abs(new Random().Next(3000)); Thread.Sleep(ms); _concurrentRequestsCounter.Decrement(); // decrement number of concurrent requests } }
/// <summary> /// Converts the message to an array of bytes /// </summary> /// <typeparam name="T">the message type</typeparam> /// <param name="message">The message.</param> /// <returns> /// byte array /// </returns> public byte[] ConvertMessageToBytes <T>(T message) where T : class { using (_messageToBytesTimer.NewContext()) { var result = _handler.ConvertMessageToBytes(message); _resultSizeHistogram.Update(result.Length, result.Length.ToString(CultureInfo.InvariantCulture)); return(result); } }
/// <summary> /// Converts the action method to bytes. /// </summary> /// <param name="method">The method.</param> /// <returns></returns> public byte[] ConvertMethodToBytes(Expression <Action <IReceivedMessage <MessageExpression>, IWorkerNotification> > method) { using (_methodToBytesTimer.NewContext()) { var result = _handler.ConvertMethodToBytes(method); _resultMethodSizeHistogram.Update(result.Length, result.Length.ToString(CultureInfo.InvariantCulture)); return(result); } }
/// <summary> /// Converts an input class to a string /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data">The data to serialize</param> /// <returns></returns> public string ConvertToString <T>(T data) where T : class { using (_messageToStringTimer.NewContext()) { var result = _handler.ConvertToString(data); _resultSizeStringHistogram.Update(result.Length, result.Length.ToString(CultureInfo.InvariantCulture)); return(result); } }
/// <summary> /// Converts the message to an array of bytes /// </summary> /// <typeparam name="T">the message type</typeparam> /// <param name="message">The message.</param> /// <param name="headers">the message headers</param> /// <returns> /// byte array /// </returns> public byte[] ConvertMessageToBytes <T>(T message, IReadOnlyDictionary <string, object> headers) where T : class { using (_messageToBytesTimer.NewContext()) { var result = _handler.ConvertMessageToBytes(message, headers); _resultSizeHistogram.Update(result.Length, result.Length.ToString(CultureInfo.InvariantCulture)); return(result); } }
/// <summary> /// Runs the interceptor on the input and returns the output as a byte array. Used to serialize a message stream. /// </summary> /// <param name="input">The input.</param> /// <param name="headers">the message headers</param> /// <returns></returns> public MessageInterceptorResult MessageToBytes(byte[] input, IReadOnlyDictionary <string, object> headers) { using (_metricTimerMessage.NewContext()) { var temp = _handler.MessageToBytes(input, headers); if (!temp.AddToGraph) { _metricHistogramOptOut.Update(input.Length, input.Length.ToString(CultureInfo.InvariantCulture)); return(temp); } //metrics.net no longer accepts negative values - which makes sense... Ensure that the delta is always positive var delta = Math.Abs(input.Length - temp.Output.Length); _metricHistogramDelta.Update(delta, delta.ToString(CultureInfo.InvariantCulture)); _metricHistogram.Update(input.Length, input.Length.ToString(CultureInfo.InvariantCulture)); return(temp); } }
public void Process(string documentId) { var results = GetResultsForDocument(documentId); _histogram.Update(results.Length, documentId); }