Esempio n. 1
0
        public BsonValue CreateMessageBackup(Command command, QueueActions action = QueueActions.Sent, bool increaseRetryCounter = false, string additionalData = null, string errorData = null)
        {
            try
            {
                if (command?.InternalMessageIdentifier == null || command.InternalMessageIdentifier.IsNullOrEmptyGuid())
                {
                    throw new ArgumentException($"The provided command  and the command identifier cannot be null ");
                }

                var backUp = new RabbitBackup
                {
                    Id = Guid.NewGuid(),
                    InternalMessageIdentifier = command.InternalMessageIdentifier,
                    Retries        = increaseRetryCounter ? 1 : 0,
                    AdditionalData = string.IsNullOrEmpty(additionalData) ? string.Empty : additionalData,
                    IsError        = false,
                    MessageContent = GetSerializedContent(command),
                    MessageType    = command.MessageType,
                    TimeStampUTC   = command.Timestamp.ToUniversalTime(),
                    Action         = action.ToString(),
                    Error          = string.IsNullOrEmpty(errorData) ? string.Empty : errorData
                };

                var result = RabbitMqBackupLiteDbRepository.Create(backUp);

                return(result);
            }
            catch (Exception ex)
            {
                Devon4NetLogger.Error($"Error storing data with LiteDb: {ex.Message} {ex.InnerException}");
                Devon4NetLogger.Error(ex);
                throw;
            }
        }
Esempio n. 2
0
        public QueuedItem Enqueue(Guid key, string name, int userId = 0, QueueActions action = QueueActions.Publish)
        {
            var item = new QueuedItem()
            {
                Name      = name,
                NodeKey   = key,
                Submitted = DateTime.Now,
                UserId    = userId,
                Action    = (int)action
            };

            return(Enqueue(item));
        }
Esempio n. 3
0
        private async Task BackUpMessage(T command, QueueActions queueAction = QueueActions.Sent, bool increaseRetryCounter = false, string additionalData = null, string errorData = null)
        {
            try
            {
                RabbitMqBackupLiteDbService?.CreateMessageBackup(command, queueAction, increaseRetryCounter, additionalData, errorData);

                if (RabbitMqBackupService != null && RabbitMqBackupService.UseExternalDatabase)
                {
                    await RabbitMqBackupService.CreateMessageBackup(command, queueAction, increaseRetryCounter, additionalData, errorData).ConfigureAwait(false);
                }
            }
            catch (Exception ex)
            {
                Devon4NetLogger.Error(ex);
                throw;
            }
        }
Esempio n. 4
0
        public async Task <RabbitBackup> CreateMessageBackup(Command command, QueueActions action = QueueActions.Sent, bool increaseRetryCounter = false, string additionalData = null, string errorData = null)
        {
            RabbitMqBackupContext ctx = null;

            try
            {
                ctx = CreateContext();

                CheckParamContext(command, ctx);

                var backUp = new RabbitBackup
                {
                    Id = Guid.NewGuid(),
                    InternalMessageIdentifier = command.InternalMessageIdentifier,
                    Retries        = increaseRetryCounter ? 1 : 0,
                    AdditionalData = string.IsNullOrEmpty(additionalData) ? string.Empty : additionalData,
                    IsError        = false,
                    MessageContent = GetSerializedContent(command),
                    MessageType    = command.MessageType,
                    TimeStampUTC   = command.Timestamp.ToUniversalTime(),
                    Action         = action.ToString(),
                    Error          = string.IsNullOrEmpty(errorData) ? string.Empty : errorData
                };

                var result = await ctx.RabbitBackup.AddAsync(backUp).ConfigureAwait(false);

                await ctx.SaveChangesAsync().ConfigureAwait(false);

                return(result.Entity);
            }
            catch (Exception ex)
            {
                Devon4NetLogger.Error(ex);
                throw;
            }
            finally
            {
                if (ctx != null)
                {
                    await ctx.DisposeAsync().ConfigureAwait(false);
                }
            }
        }
 /// <summary>
 /// Add a and item to the queue - with a specifed action.
 /// </summary>
 private static void QueueItem(Guid nodeKey, string name, int userId, QueueActions action)
 {
     PublishQueueContext.Current.QueueService.Enqueue(nodeKey, name, userId, action);
 }