private void CreateTopicIfNotExists(NamespaceManager namespaceManager, TopicSettings topic) { var topicDescription = new TopicDescription(topic.Path) { RequiresDuplicateDetection = true }; if (topic.DuplicateDetectionHistoryTimeWindow > TimeSpan.Zero) { topicDescription.DuplicateDetectionHistoryTimeWindow = topic.DuplicateDetectionHistoryTimeWindow; } try { namespaceManager.CreateTopic(topicDescription); } catch (MessagingEntityAlreadyExistsException) { } }
public EventProcessor CreateEventProcessor(string subscription, IEventHandler handler, ITextSerializer serializer, bool instrumentationEnabled = false) { if (!this.initialized) { throw new InvalidOperationException("Service bus configuration has not been initialized."); } TopicSettings topicSettings = null; SubscriptionSettings subscriptionSettings = null; foreach (var settings in this.settings.Topics.Where(t => t.IsEventBus)) { subscriptionSettings = settings.Subscriptions.Find(s => s.Name == subscription); if (subscriptionSettings != null) { topicSettings = settings; break; } } if (subscriptionSettings == null) { throw new ArgumentOutOfRangeException( string.Format( CultureInfo.CurrentCulture, "Subscription '{0}' has not been registered for an event bus topic in the service bus configuration.", subscription)); } IMessageReceiver receiver; if (subscriptionSettings.RequiresSession) { var instrumentation = new SessionSubscriptionReceiverInstrumentation(subscription, instrumentationEnabled); try { receiver = (IMessageReceiver) new SessionSubscriptionReceiver(this.settings, topicSettings.Path, subscription, true, instrumentation); } catch { instrumentation.Dispose(); throw; } } else { var instrumentation = new SubscriptionReceiverInstrumentation(subscription, instrumentationEnabled); try { receiver = (IMessageReceiver) new SubscriptionReceiver(this.settings, topicSettings.Path, subscription, true, instrumentation); } catch { instrumentation.Dispose(); throw; } } EventProcessor processor; try { processor = new EventProcessor(receiver, serializer); } catch { using (receiver as IDisposable) { } throw; } try { processor.Register(handler); return(processor); } catch { processor.Dispose(); throw; } }
private static void UpdateRules(NamespaceManager namespaceManager, string servicebusConnectionString, TopicSettings topic, SubscriptionSettings subscription) { string sqlExpression = null; if (!string.IsNullOrWhiteSpace(subscription.SqlFilter)) { sqlExpression = subscription.SqlFilter; } UpdateSqlFilter(namespaceManager, servicebusConnectionString, sqlExpression, subscription.Name, topic.Path); }
private static void UpdateSubscriptionIfExists(NamespaceManager namespaceManager, string servicebusConnectionString, TopicSettings topic, UpdateSubscriptionIfExists action) { if (string.IsNullOrWhiteSpace(action.Name)) { throw new ArgumentException("action"); } if (string.IsNullOrWhiteSpace(action.SqlFilter)) { throw new ArgumentException("action"); } UpdateSqlFilter(namespaceManager, servicebusConnectionString, action.SqlFilter, action.Name, topic.Path); }
private void CreateSubscriptionIfNotExists(NamespaceManager namespaceManager, TopicSettings topic, SubscriptionSettings subscription) { var subscriptionDescription = new SubscriptionDescription(topic.Path, subscription.Name) { RequiresSession = subscription.RequiresSession, LockDuration = TimeSpan.FromSeconds(150), }; try { namespaceManager.CreateSubscription(subscriptionDescription); } catch (MessagingEntityAlreadyExistsException) { } }