Example #1
0
        public void ErrorPublishStore([Object] CapEventDataPubSend eventData)
        {
            var context = _exitSegmentContextAccessor.Context;

            if (context == null)
            {
                return;
            }

            context.Span.ErrorOccurred(eventData.Exception);
            _tracingContext.Release(context);
        }
Example #2
0
        public void BeforePublish([Object] CapEventDataPubSend eventData)
        {
            _localSegmentContextAccessor.Context = _contexts[eventData.TransportMessage.GetId()];

            var context = _tracingContext.CreateExitSegmentContext(OperateNamePrefix + eventData.Operation + ProducerOperateNameSuffix,
                                                                   eventData.BrokerAddress.Endpoint.Replace("-1", "5672"),
                                                                   new CapCarrierHeaderCollection(eventData.TransportMessage));

            context.Span.SpanLayer = SpanLayer.MQ;
            context.Span.Component = GetComponent(eventData.BrokerAddress, true);

            context.Span.AddTag(Tags.MQ_TOPIC, eventData.Operation);
            context.Span.AddTag(Tags.MQ_BROKER, eventData.BrokerAddress.Endpoint);
            context.Span.AddLog(LogEvent.Event("Event Publishing"));
            context.Span.AddLog(LogEvent.Message("Message publishing start..."));
        }
Example #3
0
        public void ErrorPublish([Object] CapEventDataPubSend eventData)
        {
            var context = _exitSegmentContextAccessor.Context;

            if (context == null)
            {
                return;
            }

            context.Span.AddLog(LogEvent.Event("Event Publishing"));
            context.Span.AddLog(LogEvent.Message("Message publishing failed!"));
            context.Span.ErrorOccurred(eventData.Exception);

            _tracingContext.Release(context);

            _contexts.TryRemove(eventData.TransportMessage.GetId(), out _);
        }
Example #4
0
        public void AfterPublish([Object] CapEventDataPubSend eventData)
        {
            var context = _exitSegmentContextAccessor.Context;

            if (context == null)
            {
                return;
            }

            context.Span.AddLog(LogEvent.Event("Event Publishing"));
            context.Span.AddLog(LogEvent.Message("Message publishing succeeded!"));
            context.Span.AddLog(LogEvent.Message("Spend Time: " + eventData.ElapsedTimeMs + "ms"));

            _tracingContext.Release(context);

            _contexts.TryRemove(eventData.TransportMessage.GetId(), out _);
        }
Example #5
0
        private void TracingAfter(long?tracingTimestamp, TransportMessage message, BrokerAddress broker)
        {
            if (tracingTimestamp != null && s_diagnosticListener.IsEnabled(CapDiagnosticListenerNames.AfterPublish))
            {
                var now       = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                var eventData = new CapEventDataPubSend()
                {
                    OperationTimestamp = now,
                    Operation          = message.GetName(),
                    BrokerAddress      = broker,
                    TransportMessage   = message,
                    ElapsedTimeMs      = now - tracingTimestamp.Value
                };

                s_diagnosticListener.Write(CapDiagnosticListenerNames.AfterPublish, eventData);
            }
        }
        public void AfterPublish([Object] CapEventDataPubSend eventData)
        {
            var context = _exitSegmentContextAccessor.Context;

            if (context == null)
            {
                return;
            }

            context.Span.AddLog(LogEvent.Event("Event Publishing End"));
            context.Span.AddLog(LogEvent.Message($"CAP message publishing succeeded!{Environment.NewLine}" +
                                                 $"--> Spend Time: { eventData.ElapsedTimeMs }ms.  {Environment.NewLine}" +
                                                 $"--> Message Id: { eventData.TransportMessage.GetId() }, Name: {eventData.Operation}"));

            _tracingContext.Release(context);

            _contexts.TryRemove(eventData.TransportMessage.GetId(), out _);
        }
Example #7
0
        private long?TracingBefore(TransportMessage message, BrokerAddress broker)
        {
            if (s_diagnosticListener.IsEnabled(CapDiagnosticListenerNames.BeforePublish))
            {
                var eventData = new CapEventDataPubSend()
                {
                    OperationTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                    Operation          = message.GetName(),
                    BrokerAddress      = broker,
                    TransportMessage   = message
                };

                s_diagnosticListener.Write(CapDiagnosticListenerNames.BeforePublish, eventData);

                return(eventData.OperationTimestamp);
            }

            return(null);
        }
Example #8
0
        private void TracingError(long?tracingTimestamp, TransportMessage message, BrokerAddress broker, OperateResult result)
        {
            if (tracingTimestamp != null && s_diagnosticListener.IsEnabled(CapDiagnosticListenerNames.ErrorPublish))
            {
                var ex  = new PublisherSentFailedException(result.ToString(), result.Exception);
                var now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

                var eventData = new CapEventDataPubSend()
                {
                    OperationTimestamp = now,
                    Operation          = message.GetName(),
                    BrokerAddress      = broker,
                    TransportMessage   = message,
                    ElapsedTimeMs      = now - tracingTimestamp.Value,
                    Exception          = ex
                };

                s_diagnosticListener.Write(CapDiagnosticListenerNames.ErrorPublish, eventData);
            }
        }