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; } }
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)); }
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; } }
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); }