private void CreateSubscriptionIfNotExists(NamespaceManager namespaceManager, TopicSettings topic, SubscriptionSettings subscription) { var subscriptionDescription = new SubscriptionDescription(topic.Path, subscription.Name) { RequiresSession = subscription.RequiresSession }; try { namespaceManager.CreateSubscription(subscriptionDescription); } catch (MessagingEntityAlreadyExistsException) { } }
private static void CreateSubscriptionIfNotExists(NamespaceManager namespaceManager, string topicPath, SubscriptionSettings subscriptionSettings) { if (namespaceManager.SubscriptionExists(topicPath, subscriptionSettings.Name)) { return; } var subscriptionDescription = new SubscriptionDescription(topicPath, subscriptionSettings.Name) { // Fill subscription settings; LockDuration = TimeSpan.FromSeconds(150), }; namespaceManager.CreateSubscription(subscriptionDescription); }
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, TopicSettings topic, SubscriptionSettings subscription) { string sqlExpression = null; if (!string.IsNullOrWhiteSpace(subscription.SqlFilter)) { sqlExpression = subscription.SqlFilter; } UpdateSqlFilter(namespaceManager, sqlExpression, subscription.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) { } }