Esempio n. 1
0
        private void PipelineException(object sender, PipelineExceptionEventArgs e)
        {
            var @event = ExceptionEventExtensions.CorePipelineExceptionEvent(e.Pipeline.Exception, hostName, ipAddresses);

            @event.PipelineTypeFullName      = e.Pipeline.FullName();
            @event.PipelineStageName         = e.Pipeline.StageName;
            @event.PipelineEventTypeFullName = e.Pipeline.Event.FullName();

            lock (padlock)
            {
                foreach (var deferredEvent in deferredEvents)
                {
                    _bus.Publish(deferredEvent);
                }

                deferredEvents.Clear();
            }

            _bus.Publish(@event);
        }
Esempio n. 2
0
        private void HandlerException(object sender, HandlerExceptionEventArgs e)
        {
            var @event = ExceptionEventExtensions.CoreHandlerExceptionEvent(e.Exception, hostName, ipAddresses);

            @event.HandlerTypeFullName = e.MessageHandler.FullName();
            @event.MessageId           = e.TransportMessage.MessageId;
            @event.MessageTypeFullName = e.TransportMessage.MessageType;
            @event.WorkQueueUri        = e.WorkQueue != null?e.WorkQueue.Uri.ToString() : string.Empty;

            @event.ErrorQueueUri = e.ErrorQueue != null?e.ErrorQueue.Uri.ToString() : string.Empty;

            @event.RetryCount          = e.TransportMessage.FailureMessages.Count() + 1;
            @event.MaximumFailureCount = e.PipelineEvent.GetServiceBus().Configuration.Inbox.MaximumFailureCount;

            // cannot publish here since handler is wrapped in a transaction scope
            // will always also result in pipeline exception so publish there
            lock (padlock)
            {
                deferredEvents.Add(@event);
            }
        }