Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 public static void ExecuteSubscriptionChains(params SubscriptionChainRequestContent[] contentList)
 {
     InformationContext.Current.IsExecutingSubscriptions = true;
     try
     {
         string[] subscriptionTargetList =
             contentList.SelectMany(reqContent => reqContent.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);
         }
         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);
         }
     }
     finally
     {
         InformationContext.Current.IsExecutingSubscriptions = false;
     }
 }