public void StageRetryByUniqueMessageIds(string requestId, RetryType retryType, string[] messageIds, DateTime startTime, DateTime?last = null, string originator = null, string batchName = null, string classifier = null) { if (messageIds == null || !messageIds.Any()) { log.DebugFormat("Batch '{0}' contains no messages", batchName); return; } var batchDocumentId = retryDocumentManager.CreateBatchDocument(requestId, retryType, messageIds.Length, originator, startTime, last, batchName, classifier); log.InfoFormat("Created Batch '{0}' with {1} messages for '{2}'", batchDocumentId, messageIds.Length, batchName); var retryIds = new string[messageIds.Length]; var commands = new ICommandData[messageIds.Length]; for (var i = 0; i < messageIds.Length; i++) { commands[i] = retryDocumentManager.CreateFailedMessageRetryDocument(batchDocumentId, messageIds[i]); retryIds[i] = commands[i].Key; } store.DatabaseCommands.Batch(commands); retryDocumentManager.MoveBatchToStaging(batchDocumentId, retryIds); log.InfoFormat("Moved Batch '{0}' to Staging", batchDocumentId); }
private async Task StageRetryByUniqueMessageIds(string requestId, RetryType retryType, string[] messageIds, DateTime startTime, DateTime?last = null, string originator = null, string batchName = null, string classifier = null) { if (messageIds == null || !messageIds.Any()) { log.Info($"Batch '{batchName}' contains no messages"); return; } var failedMessageRetryIds = messageIds.Select(FailedMessageRetry.MakeDocumentId).ToArray(); var batchDocumentId = await retryDocumentManager.CreateBatchDocument(requestId, retryType, failedMessageRetryIds, originator, startTime, last, batchName, classifier) .ConfigureAwait(false); log.Info($"Created Batch '{batchDocumentId}' with {messageIds.Length} messages for '{batchName}'."); var commands = new ICommandData[messageIds.Length]; for (var i = 0; i < messageIds.Length; i++) { commands[i] = RetryDocumentManager.CreateFailedMessageRetryDocument(batchDocumentId, messageIds[i]); } await store.AsyncDatabaseCommands.BatchAsync(commands) .ConfigureAwait(false); await retryDocumentManager.MoveBatchToStaging(batchDocumentId).ConfigureAwait(false); log.Info($"Moved Batch '{batchDocumentId}' to Staging"); }