public QueueJobSummaryResult CheckQueueJobSummary() { var returnValue = new QueueJobSummaryResult(); var baseType = typeof(JobData); var typeList = AppDomain.CurrentDomain.GetAssemblies().ToList() .SelectMany(s => s.GetTypes()) .Where(p => baseType.IsAssignableFrom(p) && p.IsClass).ToList(); DateTime oneHourAgo = DateTime.UtcNow.AddMinutes(-60); foreach (var type in typeList) { bool any = _documentSession.Advanced.LuceneQuery <object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .Any(); if (any) { var item = new QueueJobSummaryResultItem { QueueDataType = type }; item.ErrorCount = _documentSession.Advanced.LuceneQuery <object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .AndAlso().WhereEquals("Status", EnumJobStatus.Error) .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120)) .QueryResult.TotalResults; item.InProcessCount = _documentSession.Advanced.LuceneQuery <object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess) .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120)) .QueryResult.TotalResults; item.SuspectInProcessCount = _documentSession.Advanced.LuceneQuery <object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess) .AndAlso().WhereGreaterThan("QueuedDateTimeUtc", oneHourAgo) .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120)) .QueryResult.TotalResults; returnValue.Items.Add(item); } } return(returnValue); }
public QueueJobSummaryResult CheckQueueJobSummary() { var returnValue = new QueueJobSummaryResult(); var baseType = typeof(JobData); var typeList = AppDomain.CurrentDomain.GetAssemblies().ToList() .SelectMany(s => s.GetTypes()) .Where(p => baseType.IsAssignableFrom(p) && p.IsClass).ToList(); DateTime oneHourAgo = DateTime.UtcNow.AddMinutes(-60); foreach (var type in typeList) { bool any = _documentSession.Advanced.LuceneQuery<object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .Any(); if (any) { var item = new QueueJobSummaryResultItem { QueueDataType = type }; item.ErrorCount = _documentSession.Advanced.LuceneQuery<object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .AndAlso().WhereEquals("Status", EnumJobStatus.Error) .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120)) .QueryResult.TotalResults; item.InProcessCount = _documentSession.Advanced.LuceneQuery<object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess) .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120)) .QueryResult.TotalResults; item.SuspectInProcessCount = _documentSession.Advanced.LuceneQuery<object>() .WhereEquals("@metadata.Raven-Entity-Name", _documentSession.Advanced.DocumentStore.Conventions.GetTypeTagName(type)) .AndAlso().WhereEquals("Status", EnumJobStatus.InProcess) .AndAlso().WhereGreaterThan("QueuedDateTimeUtc", oneHourAgo) .WaitForNonStaleResultsAsOfNow(TimeSpan.FromSeconds(120)) .QueryResult.TotalResults; returnValue.Items.Add(item); } } return returnValue; }