Metrics Upgrade Version 1.0 to 1.1

Component: Metrics

RegisterObservers replaces basic methods

The EnableMetricTracing, EnableCustomReport and EnableLogTracing methods have been deprecated and replaced with the more extensible RegisterObservers.

Also note that the older methods supported an interval TimeSpan. In the new API batching up metrics, and flushing them at a given interval, is the domain of the calling code.

EnableMetricTracing

Replace with explicit calls to Trace.WriteLine.

1.1 NServiceBus.Metrics
var metrics = endpointConfiguration.EnableMetrics();
metrics.RegisterObservers(
    register: context =>
    {
        foreach (var duration in context.Durations)
        {
            duration.Register(
                observer: length =>
                {
                    Trace.WriteLine($"Duration '{duration.Name}'. Value: '{length}'");
                });
        }
        foreach (var signal in context.Signals)
        {
            signal.Register(
                observer: () =>
                {
                    Trace.WriteLine($"Signal: '{signal.Name}'");
                });
        }
    });
1.x NServiceBus.Metrics
var metrics = endpointConfiguration.EnableMetrics();
metrics.EnableMetricTracing(TimeSpan.FromSeconds(5));

EnableLogTracing

Replace with explicit calls to an NServiceBus logger.

1.1 NServiceBus.Metrics
//TODO: the logger instance should be a static field
var log = LogManager.GetLogger("LoggerName");

var metrics = endpointConfiguration.EnableMetrics();
metrics.RegisterObservers(
    register: context =>
    {
        foreach (var duration in context.Durations)
        {
            duration.Register(
                observer: length =>
                {
                    log.Info($"Duration: '{duration.Name}'. Value: '{length}'");
                });
        }
        foreach (var signal in context.Signals)
        {
            signal.Register(
                observer: () =>
                {
                    log.Info($"Signal: '{signal.Name}'");
                });
        }
    });
1.x NServiceBus.Metrics
var metrics = endpointConfiguration.EnableMetrics();
metrics.EnableLogTracing(TimeSpan.FromSeconds(5), LogLevel.Info);

EnableCustomReport

Replace with explicit calls to the custom method.

1.1 NServiceBus.Metrics
var metrics = endpointConfiguration.EnableMetrics();
metrics.RegisterObservers(
    register: context =>
    {
        foreach (var duration in context.Durations)
        {
            duration.Register(
                observer: length =>
                {
                    ProcessMetric(duration, length);
                });
        }
        foreach (var signal in context.Signals)
        {
            signal.Register(
                observer: () =>
                {
                    ProcessMetric(signal);
                });
        }
    });
1.x NServiceBus.Metrics
var metrics = endpointConfiguration.EnableMetrics();
metrics.EnableCustomReport(
    func: data => ProcessMetric(data),
    interval: TimeSpan.FromSeconds(5));

Last modified