Beispiel #1
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);
        }
Beispiel #2
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);
        }
        public void CreateSubscriptionToPublishSubscribeChannel(SubscriptionToPublishSubscribeChannel subscriptionToPublishSubscribeChannel, IChannelManager channelmanager)
        {
            if (subscriptionToPublishSubscribeChannel.ConnectionStringExtractorType != null)
            {
                var extractorconnectionstring = _factory.Create <IValueSettingFinder>(subscriptionToPublishSubscribeChannel.ConnectionStringExtractorType);

                var toconnectionextractor = subscriptionToPublishSubscribeChannel.ToConnectionStringExtractor as Func <IValueSettingFinder, string>;

                if (toconnectionextractor != null && !string.IsNullOrWhiteSpace(subscriptionToPublishSubscribeChannel.Path) && !string.IsNullOrWhiteSpace(subscriptionToPublishSubscribeChannel.Subscription) && ((subscriptionToPublishSubscribeChannel.All == false && !string.IsNullOrWhiteSpace(subscriptionToPublishSubscribeChannel.Origin.Key)) || subscriptionToPublishSubscribeChannel.All))
                {
                    try
                    {
                        var connectionstring = toconnectionextractor(extractorconnectionstring);

                        var created = channelmanager.CreateIfNotExistSubscriptionToPublishSubscribeChannel(connectionstring, subscriptionToPublishSubscribeChannel.Path, subscriptionToPublishSubscribeChannel.Subscription, subscriptionToPublishSubscribeChannel.Origin.Key, subscriptionToPublishSubscribeChannel.All);

                        if (created)
                        {
                            Console.WriteLine($"Created subscription to {subscriptionToPublishSubscribeChannel.Path}/{subscriptionToPublishSubscribeChannel.Subscription} publish subscriber channel");
                        }
                        else
                        {
                            Console.WriteLine($"Subscription to publish subscriber channel {subscriptionToPublishSubscribeChannel.Path}/{subscriptionToPublishSubscribeChannel.Subscription} already exists");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception {subscriptionToPublishSubscribeChannel.Path}/{subscriptionToPublishSubscribeChannel.Subscription} subscription to publish subscriber channel: {ex}");
                    }
                }
            }
        }
Beispiel #4
0
        public void RegisterSubscriptionToPublishSubscriberChannel(string subscription, string path, string connectionstring, bool all = false)
        {
            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),
                ToConnectionStringExtractor   = extractor,
                All = all
            };

            _subscriptions.Add(channel);
        }
Beispiel #5
0
        public void CreateSubscriptionToPublishSubscribeChannel(SubscriptionToPublishSubscribeChannel subscription, IChannelManager manager, StringBuilder errors)
        {
            if (subscription.ConnectionStringExtractorType != null)
            {
                var finder = _factory.Create <IValueSettingFinder>(subscription.ConnectionStringExtractorType);

                var extractor = subscription.ConnectionStringExtractor as Func <IValueSettingFinder, string>;

                subscription.ConnectionString = extractor?.Invoke(finder);

                if (string.IsNullOrWhiteSpace(subscription.ConnectionString))
                {
                    var error = $"Empty connection string, subscription to publish subscriber channel {subscription.Path}";

                    errors.AppendLine(error);

                    _logger.Log(error);

                    return;
                }

                if (string.IsNullOrWhiteSpace(subscription.Path))
                {
                    var error = $"Empty path, subscription to publish subscriber channel {subscription.Path}";

                    errors.AppendLine(error);

                    _logger.Log(error);

                    return;
                }

                if (string.IsNullOrWhiteSpace(subscription.Subscription))
                {
                    var error = $"Empty subscription, subscription to publish subscriber channel {subscription.Path}";

                    errors.AppendLine(error);

                    _logger.Log(error);

                    return;
                }

                if (subscription.Rules.Count == 0)
                {
                    var error = $"Missing rules, subscription to publish subscriber channel {subscription.Path}";

                    errors.AppendLine(error);

                    _logger.Log(error);

                    return;
                }

                try
                {
                    var created = manager.CreateIfNotExistSubscriptionToPublishSubscribeChannel(subscription.ConnectionString, subscription.Path, subscription.Subscription, subscription.Rules.FirstOrDefault());

                    if (created)
                    {
                        _logger.Log($"Created subscription to {subscription.Path}/{subscription.Subscription} publish subscriber channel");
                    }
                    else
                    {
                        _logger.Log($"Subscription to publish subscriber channel {subscription.Path}/{subscription.Subscription} already exists");
                    }
                }
                catch (Exception ex)
                {
                    var error = $"Exception {subscription.Path}/{subscription.Subscription} subscription to publish subscriber channel: {ex}";

                    errors.AppendLine(error);

                    _logger.Log(error);
                }
            }
        }
Beispiel #6
0
        public SubscriptionToPublishSubscribeChannelInfo GetSubscriptionToPublishSubscribeChannel(SubscriptionToPublishSubscribeChannel subscriptionToPublishSubscribeChannel, IChannelManager channelmanager)
        {
            if (subscriptionToPublishSubscribeChannel.ConnectionStringExtractorType != null)
            {
                var extractorconnectionstring = _factory.Create <IValueSettingFinder>(subscriptionToPublishSubscribeChannel.ConnectionStringExtractorType);

                var toconnectionextractor = subscriptionToPublishSubscribeChannel.ToConnectionStringExtractor as Func <IValueSettingFinder, string>;

                if (toconnectionextractor != null && !string.IsNullOrWhiteSpace(subscriptionToPublishSubscribeChannel.Path))
                {
                    return(channelmanager.GetSubscriptionToPublishSubscribeChannel(toconnectionextractor(extractorconnectionstring), subscriptionToPublishSubscribeChannel.Path, subscriptionToPublishSubscribeChannel.Subscription));
                }
            }
            return(null);
        }