Пример #1
0
 public void RemoveArchiveOperation(IDocumentStore store, ArchiveOperation archiveOperation)
 {
     using (var session = store.OpenSession())
     {
         session.Advanced.DocumentStore.DatabaseCommands.Delete(archiveOperation.Id, null);
         session.SaveChanges();
     }
 }
        public async Task RemoveArchiveOperation(IDocumentStore store, ArchiveOperation archiveOperation)
        {
            using (var session = store.OpenAsyncSession())
            {
                await session.Advanced.DocumentStore.AsyncDatabaseCommands.DeleteAsync(archiveOperation.Id, null)
                .ConfigureAwait(false);

                await session.SaveChangesAsync()
                .ConfigureAwait(false);
            }
        }
Пример #3
0
        public ArchiveOperation CreateArchiveOperation(IDocumentSession session, string groupId, ArchiveType archiveType, DateTime?cutOff, int numberOfMessages, string groupName, int batchSize)
        {
            var operation = new ArchiveOperation
            {
                Id                       = ArchiveOperation.MakeId(groupId, archiveType),
                RequestId                = groupId,
                ArchiveType              = archiveType,
                TotalNumberOfMessages    = numberOfMessages,
                NumberOfMessagesArchived = 0,
                Started                  = DateTime.Now,
                GroupName                = groupName,
                NumberOfBatches          = (int)Math.Ceiling(numberOfMessages / (float)batchSize),
                CurrentBatch             = 0
            };

            session.Store(operation);

            int documentCount = 0;
            var indexQuery    = session.Query <FailureGroupMessageView>(new FailedMessages_ByGroup().IndexName);

            if (cutOff.HasValue)
            {
                indexQuery = indexQuery.Customize(x => x.WaitForNonStaleResultsAsOf(cutOff.Value));
            }

            var docQuery = indexQuery
                           .Where(failure => failure.FailureGroupId == groupId)
                           .Where(failure => failure.Status == FailedMessageStatus.Unresolved)
                           .AsProjection <FailureGroupMessageView>()
                           .Select(document => document.Id);

            var docs = StreamResults(session, docQuery).ToArray();

            var batches = docs
                          .GroupBy(d =>
            {
                return(documentCount++ / batchSize);
            });

            foreach (var batch in batches)
            {
                var archiveBatch = new ArchiveBatch
                {
                    Id          = ArchiveBatch.MakeId(groupId, archiveType, batch.Key),
                    DocumentIds = batch.ToList()
                };

                session.Store(archiveBatch);
            }

            return(operation);
        }
        public Task StartArchiving(ArchiveOperation archiveOperation)
        {
            var summary = GetOrCreate(archiveOperation.ArchiveType, archiveOperation.RequestId);

            summary.TotalNumberOfMessages    = archiveOperation.TotalNumberOfMessages;
            summary.NumberOfMessagesArchived = archiveOperation.NumberOfMessagesArchived;
            summary.Started         = archiveOperation.Started;
            summary.GroupName       = archiveOperation.GroupName;
            summary.NumberOfBatches = archiveOperation.NumberOfBatches;
            summary.CurrentBatch    = archiveOperation.CurrentBatch;

            return(summary.Start());
        }
Пример #5
0
 internal ArchiveOperation ToArchiveOperation()
 {
     return(new ArchiveOperation
     {
         ArchiveType = ArchiveType,
         GroupName = GroupName,
         Id = ArchiveOperation.MakeId(RequestId, ArchiveType),
         NumberOfMessagesArchived = NumberOfMessagesArchived,
         RequestId = RequestId,
         Started = Started,
         TotalNumberOfMessages = TotalNumberOfMessages,
         NumberOfBatches = NumberOfBatches,
         CurrentBatch = CurrentBatch
     });
 }
        public async Task <ArchiveOperation> CreateArchiveOperation(IAsyncDocumentSession session, string groupId, ArchiveType archiveType, int numberOfMessages, string groupName, int batchSize)
        {
            var operation = new ArchiveOperation
            {
                Id                       = ArchiveOperation.MakeId(groupId, archiveType),
                RequestId                = groupId,
                ArchiveType              = archiveType,
                TotalNumberOfMessages    = numberOfMessages,
                NumberOfMessagesArchived = 0,
                Started                  = DateTime.Now,
                GroupName                = groupName,
                NumberOfBatches          = (int)Math.Ceiling(numberOfMessages / (float)batchSize),
                CurrentBatch             = 0
            };

            await session.StoreAsync(operation).ConfigureAwait(false);

            var documentCount = 0;
            var indexQuery    = session.Query <FailureGroupMessageView>(new FailedMessages_ByGroup().IndexName);

            var docQuery = indexQuery
                           .Where(failure => failure.FailureGroupId == groupId)
                           .Where(failure => failure.Status == FailedMessageStatus.Unresolved)
                           .Select(document => document.Id);

            var docs = await StreamResults(session, docQuery).ConfigureAwait(false);

            var batches = docs
                          .GroupBy(d => documentCount++ / batchSize);

            foreach (var batch in batches)
            {
                var archiveBatch = new ArchiveBatch
                {
                    Id          = ArchiveBatch.MakeId(groupId, archiveType, batch.Key),
                    DocumentIds = batch.ToList()
                };

                await session.StoreAsync(archiveBatch).ConfigureAwait(false);
            }

            return(operation);
        }
 public Task UpdateArchiveOperation(IAsyncDocumentSession session, ArchiveOperation archiveOperation)
 {
     return(session.StoreAsync(archiveOperation));
 }
 public Task <ArchiveOperation> LoadArchiveOperation(IAsyncDocumentSession session, string groupId, ArchiveType archiveType)
 {
     return(session.LoadAsync <ArchiveOperation>(ArchiveOperation.MakeId(groupId, archiveType)));
 }
Пример #9
0
 public void UpdateArchiveOperation(IDocumentSession session, ArchiveOperation archiveOperation)
 {
     session.Store(archiveOperation);
 }
Пример #10
0
 public ArchiveOperation LoadArchiveOperation(IDocumentSession session, string groupId, ArchiveType archiveType)
 {
     return(session.Load <ArchiveOperation>(ArchiveOperation.MakeId(groupId, archiveType)));
 }