示例#1
0
        protected void AddMessageAudit(Message msg, string subQueueName = null, Exception ex = null)
        {
            if (!this.AuditActivity)
            {
                return;
            }

            using (var transaction = new TransactionScope(
                       TransactionScopeOption.Required,
                       new TransactionOptions {
                IsolationLevel = IsolationLevel.ReadCommitted
            }))
            {
                var messageAudit = new MessageAudit
                {
                    MessageId      = msg.Id,
                    MessageStatus  = MessageStatus.AwaitingProcessing,
                    CorrelationId  = msg.CorrelationId,
                    QueueName      = null == subQueueName ? this.QueueName : string.Format("{0};{1}", this.QueueName, subQueueName),
                    QueuePath      = null == subQueueName ? this.QueuePath : string.Format("{0};{1}", this.QueuePath, subQueueName),
                    MessageContent = this.GetMessageXml(msg)
                };
                var newId = this.MessageQueueService.CreateMessageAudit(messageAudit);
                if (null != ex)
                {
                    var processingError = new MessageProcessingError {
                        MessageAuditId = newId, Error = ex.Message, StackTrace = ex.StackTrace, TmStamp = DateTime.Now
                    };
                    this.MessageQueueService.CreateMessageAuditException(processingError);
                }

                transaction.Complete();
            }
        }
示例#2
0
 public Task HandleMessageErrorAsync(MessageProcessingError error)
 {
     if (MessageErrorHandler == null)
     {
         return(Task.CompletedTask);
     }
     return(MessageErrorHandler?.Invoke(error));
 }
示例#3
0
 public Task HandleMessageErrorAsync(MessageProcessingError error)
 {
     return(Task.CompletedTask);
 }