Exemplo n.º 1
0
 public static void RegisterSubscriptionToTopic(this AbstractRouterConfigurationSource configuration, string subscription, string topic, ServiceBusConfiguration servicebusconfiguration, SubscriptionToPublishSubscribeChannelRule rule = null)
 {
     configuration.RegisterSubscriptionToPublishSubscriberChannel(subscription, topic, JsonConvert.SerializeObject(servicebusconfiguration), rule);
 }
Exemplo n.º 2
0
        public bool CreateIfNotExistSubscriptionToPublishSubscribeChannel(string connectionstring, string path, string subscription, SubscriptionToPublishSubscribeChannelRule rule)
        {
            var namespaceManager = GetNamespaceManager(connectionstring);

            if (namespaceManager != null)
            {
                try
                {
                    namespaceManager.GetSubscription(path, subscription);

                    return(false);
                }
                catch (MessagingEntityNotFoundException)
                {
                    var subscriptiondescription = new SubscriptionDescription(path, subscription)
                    {
                        DefaultMessageTimeToLive = TimeSpan.FromDays(14),

                        LockDuration = TimeSpan.FromMinutes(5),
                    };

                    if (rule != null)
                    {
                        var ruledescriptor = new RuleDescription(rule.Name, new SqlFilter(rule.Filter));

                        namespaceManager.CreateSubscription(subscriptiondescription, ruledescriptor);
                    }
                    else
                    {
                        namespaceManager.CreateSubscription(subscriptiondescription);
                    }


                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 3
0
 public static void RegisterSubscriptionToTopic(this AbstractRouterConfigurationSource configuration, string name, string path,
                                                string connectionstring, SubscriptionToPublishSubscribeChannelRule rule = null)
 {
     configuration.RegisterSubscriptionToPublishSubscriberChannel(name, path, connectionstring, rule);
 }
Exemplo n.º 4
0
        public static void RegisterSubscriptionToTopic <TExtractorConectionString>(this AbstractRouterConfigurationSource configuration, string subscription, string topic,
                                                                                   Func <IValueSettingFinder, ServiceBusConfiguration> connectionstringextractor, SubscriptionToPublishSubscribeChannelRule rule = null)
            where TExtractorConectionString : IValueSettingFinder
        {
            Func <IValueSettingFinder, string> extractor = finder =>
            {
                var servicebusconfiguration = connectionstringextractor(finder);

                return(JsonConvert.SerializeObject(servicebusconfiguration));
            };

            configuration.RegisterSubscriptionToPublishSubscriberChannel <TExtractorConectionString>(subscription, topic, extractor, rule);
        }
Exemplo n.º 5
0
 public static void RegisterSubscriptionToTopic <TExtractorConectionString>(this AbstractRouterConfigurationSource configuration, string name, string path,
                                                                            Func <IValueSettingFinder, string> connectionstring, SubscriptionToPublishSubscribeChannelRule rule = null)
     where TExtractorConectionString : IValueSettingFinder
 {
     configuration.RegisterSubscriptionToPublishSubscriberChannel <TExtractorConectionString>(name, path, connectionstring, rule);
 }
Exemplo n.º 6
0
        public bool CreateIfNotExistSubscriptionToPublishSubscribeChannel(string connectionstring, string path, string subscription, SubscriptionToPublishSubscribeChannelRule rule)
        {
            var configuration = JsonConvert.DeserializeObject <ServiceBusConfiguration>(connectionstring);

            var serviceBusNamespace = GetServiceBusNamespace(configuration);

            if (serviceBusNamespace != null)
            {
                try
                {
                    var topic = serviceBusNamespace.Topics.GetByName(path);

                    try
                    {
                        topic.Subscriptions.GetByName(subscription);

                        return(false);
                    }
                    catch (CloudException ex)
                    {
                        if (ex.Response.StatusCode == HttpStatusCode.NotFound)
                        {
                            topic.Subscriptions.Define(subscription)
                            .WithDefaultMessageTTL(TimeSpan.FromDays(14))
                            .WithMessageLockDurationInSeconds(300)
                            .Create();

                            var subs = new Microsoft.Azure.ServiceBus.SubscriptionClient(configuration.ConnectionString, path, subscription);

                            if (rule != null)
                            {
                                subs.RemoveRuleAsync("$Default").GetAwaiter().GetResult();

                                var ruledescriptor = new RuleDescription(rule.Name, new SqlFilter(rule.Filter));

                                subs.AddRuleAsync(ruledescriptor).GetAwaiter().GetResult();
                            }

                            return(true);
                        }
                    }
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            return(false);
        }
Exemplo n.º 7
0
        public void RegisterSubscriptionToPublishSubscriberChannel <TExtractorConectionString>(string subscription, string path, Func <IValueSettingFinder, string> connectionstringextractor, SubscriptionToPublishSubscribeChannelRule rule = null)
            where TExtractorConectionString : IValueSettingFinder
        {
            if (string.IsNullOrWhiteSpace(subscription))
            {
                throw new ArgumentNullException(nameof(subscription));
            }
            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentNullException(nameof(path));
            }
            if (connectionstringextractor == null)
            {
                throw new ArgumentNullException(nameof(connectionstringextractor));
            }
            var channel = new SubscriptionToPublishSubscribeChannel(subscription, path)
            {
                ConnectionStringExtractorType = typeof(TExtractorConectionString),
                ConnectionStringExtractor     = connectionstringextractor
            };

            if (rule != null)
            {
                channel.Rules.Add(rule);
            }

            _subscriptions.Add(channel);
        }
Exemplo n.º 8
0
        public void RegisterSubscriptionToPublishSubscriberChannel(string subscription, string path, string connectionstring, SubscriptionToPublishSubscribeChannelRule rule = null)
        {
            if (string.IsNullOrWhiteSpace(subscription))
            {
                throw new ArgumentNullException(nameof(subscription));
            }
            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentNullException(nameof(path));
            }
            if (string.IsNullOrWhiteSpace(connectionstring))
            {
                throw new ArgumentNullException(nameof(connectionstring));
            }

            Func <IValueSettingFinder, string> extractor = x => connectionstring;

            var channel = new SubscriptionToPublishSubscribeChannel(subscription, path)
            {
                ConnectionStringExtractorType = typeof(NullValueSettingFinder),
                ConnectionStringExtractor     = extractor,
            };


            if (rule != null)
            {
                channel.Rules.Add(rule);
            }

            _subscriptions.Add(channel);
        }
Exemplo n.º 9
0
 public virtual bool CreateIfNotExistSubscriptionToPublishSubscribeChannel(string connectionstring, string path, string subscription, SubscriptionToPublishSubscribeChannelRule rule)
 {
     return(false);
 }