/// <summary> /// Factory method that generates an ICrmSubscriptionMessage /// </summary> /// <param name="message">BrokeredMessage</param> /// <returns>ICrmSubscriptionMessage</returns> public static ICrmSubscriptionMessage Create(BrokeredMessage message) { if (message == null) { return(null); } string messageBody = message.GetBody <string>(); if (messageBody == null) { return(null); } ADXTrace.Instance.TraceWarning(TraceCategory.Application, string.Format("Message Body for Subscription message is {0} ", messageBody.ToString())); ICrmSubscriptionMessage subscriptionMessage = CrmSubscriptionMessageFactory.Create(messageBody, message); if (subscriptionMessage != null) { CmsEventSource.Log.LatencyInfo(subscriptionMessage); } return(subscriptionMessage); }
/// <summary> /// The body. /// </summary> /// <param name="id">The activity id.</param> protected override void ExecuteInternal(Guid id) { bool isSearchSubscription = this.Manager.Settings.SubscriptionType == EventHubSubscriptionType.SearchSubscription; if (this.Manager.SubscriptionClient != null) { lock (JobLock) { try { ADXTrace.Instance.TraceInfo(TraceCategory.Application, string.Format("Subscription = '{0}' Topic = '{1}'", this.Manager.Subscription.Name, this.Manager.Subscription.TopicPath)); // take N at a time var messages = this.Manager.SubscriptionClient .ReceiveBatch(this.Manager.Settings.ReceiveBatchMessageCount, this.Manager.Settings.ReceiveBatchServerWaitTime) .Where(message => message != null); foreach (var message in messages) { message.Complete(); var crmSubscriptionMessage = CrmSubscriptionMessageFactory.Create(message); if (crmSubscriptionMessage != null) { NotificationUpdateManager.Instance.UpdateNotificationMessageTable(crmSubscriptionMessage, isSearchSubscription); } } } catch (Exception e) { this.Manager.Reset(); ADXTrace.Instance.TraceInfo(TraceCategory.Application, e.ToString()); } } } }