private static void TestSubscriptionExecution(string groupID) { string interestGroupLocation = "grp/" + groupID + "/"; var informationObjects = StorageSupport.CurrActiveContainer.GetInformationObjects(interestGroupLocation, null, io => io is AddressAndLocation && SubscribeSupport.GetSubscriptions( io.RelativeLocation) != null).ToArray (); OperationRequest operationRequest = new OperationRequest(); SubscriptionChainRequestContent content = SubscriptionChainRequestContent.CreateDefault(); SubscriptionChainRequestMessage message = SubscriptionChainRequestMessage.CreateDefault(); message.ContentItemID = content.ID; content.SubmitTime = DateTime.UtcNow; SubscriptionTarget[] targets = informationObjects. Select(io => { SubscriptionTarget target = SubscriptionTarget.CreateDefault(); target.BlobLocation = io.RelativeLocation; return(target); }).ToArray(); content.SubscriptionTargetCollection.CollectionContent.AddRange(targets); content.StoreInformation(); WorkerSupport.ExecuteSubscriptionChain(message); }
public static void ExecuteSubscriptionChain(SubscriptionChainRequestMessage subscriptionChainRequest) { InformationContext.Current.IsExecutingSubscriptions = true; SubscriptionChainRequestContent requestContent = SubscriptionChainRequestContent.RetrieveFromDefaultLocation(subscriptionChainRequest.ContentItemID); requestContent.ProcessingStartTime = DateTime.UtcNow; requestContent.StoreInformation(); string[] subscriptionTargetList = requestContent.SubscriptionTargetCollection.CollectionContent.Select(subTarget => subTarget.BlobLocation) .ToArray(); var subscriptions = SubscribeSupport.GetSubscriptionChainItemsInOrderOfExecution(subscriptionTargetList); int currSubscription = 1; var informationObjectSubscriptions = subscriptions.Where(sub => sub.SubscriptionType != SubscribeSupport.SubscribeType_WebPageToSource). ToArray(); var webPageSubscriptions = subscriptions.Where(sub => sub.SubscriptionType == SubscribeSupport.SubscribeType_WebPageToSource). ToArray(); foreach (var subscription in informationObjectSubscriptions) { ExecuteSubscription(subscription); Debug.WriteLine("Executing subscription {0} of total {1} of {2} for {3}", currSubscription++, subscriptions.Length, subscription.SubscriptionType, subscription.SubscriberRelativeLocation); } requestContent.ProcessingEndTimeInformationObjects = DateTime.UtcNow; requestContent.StoreInformation(); foreach (var subscription in webPageSubscriptions) { //ExecuteSubscription(subscription); OperationRequest operationRequest = new OperationRequest(); operationRequest.SubscriberNotification = subscription; QueueSupport.PutToOperationQueue(operationRequest); Debug.WriteLine("Executing subscription {0} of total {1} of {2} for {3}", currSubscription++, subscriptions.Length, subscription.SubscriptionType, subscription.SubscriberRelativeLocation); } requestContent.ProcessingEndTimeWebTemplatesRendering = DateTime.UtcNow; requestContent.ProcessingEndTime = DateTime.UtcNow; requestContent.StoreInformation(); InformationContext.Current.IsExecutingSubscriptions = false; }