Example #1
0
        /// <summary> Init the factory.</summary>
        public virtual void Init(IProviderConfiguration config, string providerName, Logger logger, IServiceProvider serviceProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }
            if (!config.Properties.TryGetValue(DataConnectionStringPropertyName, out dataConnectionString))
            {
                throw new ArgumentException(string.Format("{0} property not set", DataConnectionStringPropertyName));
            }
            if (!config.Properties.TryGetValue(DeploymentIdPropertyName, out deploymentId))
            {
                throw new ArgumentException(string.Format("{0} property not set", DeploymentIdPropertyName));
            }

            cacheSize = SimpleQueueAdapterCache.ParseSize(config, CacheSizeDefaultValue);

            numQueues = config.GetIntProperty(NumQueuesPropertyName, NumQueuesDefaultValue);

            this.providerName = providerName;
            streamQueueMapper = new HashRingBasedStreamQueueMapper(numQueues, providerName);
            adapterCache      = new SimpleQueueAdapterCache(cacheSize, logger);
            if (StreamFailureHandlerFactory == null)
            {
                StreamFailureHandlerFactory =
                    qid => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler(false));
            }
        }
Example #2
0
        /// <summary> Init the factory.</summary>
        public virtual void Init(IProviderConfiguration config, string providerName, Logger logger, IServiceProvider serviceProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }
            if (!config.Properties.TryGetValue(DATA_CONNECTION_STRING, out dataConnectionString))
            {
                throw new ArgumentException(String.Format("{0} property not set", DATA_CONNECTION_STRING));
            }
            if (!config.Properties.TryGetValue(DEPLOYMENT_ID, out deploymentId))
            {
                throw new ArgumentException(String.Format("{0} property not set", DEPLOYMENT_ID));
            }

            cacheSize = SimpleQueueAdapterCache.ParseSize(config, DEFAULT_CACHE_SIZE);

            string numQueuesString;

            numQueues = DEFAULT_NUM_QUEUES;
            if (config.Properties.TryGetValue(NUM_QUEUES_PARAM, out numQueuesString))
            {
                if (!int.TryParse(numQueuesString, out numQueues))
                {
                    throw new ArgumentException(String.Format("{0} invalid.  Must be int", NUM_QUEUES_PARAM));
                }
            }

            this.providerName = providerName;
            streamQueueMapper = new HashRingBasedStreamQueueMapper(numQueues, providerName);
            adapterCache      = new SimpleQueueAdapterCache(cacheSize, logger);
        }
        public RabbitMQAdapterFactory(
            string name,
            RabbitMQStreamProviderOptions config,
            HashRingStreamQueueMapperOptions queueMapperOptions,
            SimpleQueueCacheOptions cacheOptions,
            IServiceProvider serviceProvider,
            IOptions <ClusterOptions> clusterOptions,
            SerializationManager serializationManager,
            ILoggerFactory loggerFactory,
            IMessageSerializationHandler serializationHandler,
            IRabbitMQMapper mapper)

        {
            _config = config;

            _providerName         = name;
            _loggeFactory         = loggerFactory;
            _serializationHandler = serializationHandler;

            _mapper = mapper;
            _mapper.Init( );

            _cacheSize    = cacheOptions.CacheSize;
            _adapterCache = new SimpleQueueAdapterCache(cacheOptions, _providerName, _loggeFactory);

            _streamQueueMapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, _providerName);
        }
Example #4
0
        /// <summary> Init the factory.</summary>
        public virtual void Init(IProviderConfiguration config, string providerName, Logger logger, IServiceProvider serviceProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }
            if (!config.Properties.TryGetValue(DataConnectionStringPropertyName, out dataConnectionString))
            {
                throw new ArgumentException(String.Format("{0} property not set", DataConnectionStringPropertyName));
            }
            if (!config.Properties.TryGetValue(DeploymentIdPropertyName, out deploymentId))
            {
                throw new ArgumentException(String.Format("{0} property not set", DeploymentIdPropertyName));
            }

            cacheSize = SimpleQueueAdapterCache.ParseSize(config, CacheSizeDefaultValue);

            string numQueuesString;

            numQueues = NumQueuesDefaultValue;
            if (config.Properties.TryGetValue(NumQueuesPropertyName, out numQueuesString))
            {
                if (!int.TryParse(numQueuesString, out numQueues))
                {
                    throw new ArgumentException(String.Format("{0} invalid.  Must be int", NumQueuesPropertyName));
                }
            }

            this.providerName = providerName;
            streamQueueMapper = new HashRingBasedStreamQueueMapper(numQueues, providerName);
            adapterCache      = new SimpleQueueAdapterCache(cacheSize, logger);
        }
        public virtual void Init()
        {
            this.receivers         = new ConcurrentDictionary <QueueId, KafkaEventBusAdapterReceiver>();
            this.telemetryProducer = this.serviceProvider.GetService <ITelemetryProducer>();

            if (producer == null)
            {
                InitKafkaProducer();
            }

            _adapterCache = new SimpleQueueAdapterCache(new SimpleQueueCacheOptions {
                CacheSize = cacheOptions.CacheSize
            }, Name, loggerFactory);

            if (this.StreamFailureHandlerFactory == null)
            {
                //TODO: Add a queue specific default failure handler with reasonable error reporting.
                this.StreamFailureHandlerFactory = partition => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler());
            }

            if (this.QueueMapperFactory == null)
            {
                var h = new HashRingStreamQueueMapperOptions {
                    TotalQueueCount = receiverOptions.TotalQueueCount
                };
                this.streamQueueMapper = new HashRingBasedStreamQueueMapper(h, Name);

                this.QueueMapperFactory = () => new HashRingBasedStreamQueueMapper(h, this.Name);
            }

            this.logger = this.loggerFactory.CreateLogger($"{this.GetType().FullName}"); // join topics?
        }
        /// <summary> Init the factory.</summary>
        public virtual void Init(IProviderConfiguration config, string providerName, Logger logger, IServiceProvider serviceProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            if (!config.Properties.TryGetValue(AzureQueueAdapterConstants.DataConnectionStringPropertyName, out dataConnectionString))
            {
                throw new ArgumentException($"{AzureQueueAdapterConstants.DataConnectionStringPropertyName} property not set");
            }
            if (!config.Properties.TryGetValue(AzureQueueAdapterConstants.DeploymentIdPropertyName, out deploymentId))
            {
                throw new ArgumentException($"{AzureQueueAdapterConstants.DeploymentIdPropertyName} property not set");
            }
            string messageVisibilityTimeoutRaw;

            if (config.Properties.TryGetValue(AzureQueueAdapterConstants.MessageVisibilityTimeoutPropertyName, out messageVisibilityTimeoutRaw))
            {
                TimeSpan messageVisibilityTimeoutTemp;
                if (!TimeSpan.TryParse(messageVisibilityTimeoutRaw, out messageVisibilityTimeoutTemp))
                {
                    throw new ArgumentException(
                              $"Failed to parse {AzureQueueAdapterConstants.MessageVisibilityTimeoutPropertyName} value '{messageVisibilityTimeoutRaw}' as a TimeSpan");
                }

                messageVisibilityTimeout = messageVisibilityTimeoutTemp;
            }
            else
            {
                messageVisibilityTimeout = null;
            }

            cacheSize          = SimpleQueueAdapterCache.ParseSize(config, AzureQueueAdapterConstants.CacheSizeDefaultValue);
            this.loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();
            string numQueuesString;

            numQueues = AzureQueueAdapterConstants.NumQueuesDefaultValue;
            if (config.Properties.TryGetValue(AzureQueueAdapterConstants.NumQueuesPropertyName, out numQueuesString))
            {
                if (!int.TryParse(numQueuesString, out numQueues))
                {
                    throw new ArgumentException($"{AzureQueueAdapterConstants.NumQueuesPropertyName} invalid.  Must be int");
                }
            }

            this.providerName = providerName;
            streamQueueMapper = new HashRingBasedStreamQueueMapper(numQueues, providerName);
            adapterCache      = new SimpleQueueAdapterCache(cacheSize, logger);
            if (StreamFailureHandlerFactory == null)
            {
                StreamFailureHandlerFactory =
                    qid => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler());
            }

            this.SerializationManager = serviceProvider.GetRequiredService <SerializationManager>();
            this.adaptorFactory       = () => ActivatorUtilities.GetServiceOrCreateInstance <TDataAdapter>(serviceProvider);
        }
Example #7
0
        /// <summary> Init the factory.</summary>
        public virtual void Init(IProviderConfiguration config, string providerName, Logger logger, IServiceProvider serviceProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }
            if (!config.Properties.TryGetValue(DataConnectionStringPropertyName, out dataConnectionString))
            {
                throw new ArgumentException(String.Format("{0} property not set", DataConnectionStringPropertyName));
            }
            if (!config.Properties.TryGetValue(DeploymentIdPropertyName, out deploymentId))
            {
                throw new ArgumentException(String.Format("{0} property not set", DeploymentIdPropertyName));
            }
            string messageVisibilityTimeoutRaw;

            if (config.Properties.TryGetValue(MessageVisibilityTimeoutPropertyName, out messageVisibilityTimeoutRaw))
            {
                TimeSpan messageVisibilityTimeoutTemp;
                if (!TimeSpan.TryParse(messageVisibilityTimeoutRaw, out messageVisibilityTimeoutTemp))
                {
                    throw new ArgumentException(String.Format("Failed to parse {0} value '{1}' as a TimeSpan",
                                                              MessageVisibilityTimeoutPropertyName, messageVisibilityTimeoutRaw));
                }

                messageVisibilityTimeout = messageVisibilityTimeoutTemp;
            }
            else
            {
                messageVisibilityTimeout = null;
            }

            cacheSize = SimpleQueueAdapterCache.ParseSize(config, CacheSizeDefaultValue);

            string numQueuesString;

            numQueues = NumQueuesDefaultValue;
            if (config.Properties.TryGetValue(NumQueuesPropertyName, out numQueuesString))
            {
                if (!int.TryParse(numQueuesString, out numQueues))
                {
                    throw new ArgumentException(String.Format("{0} invalid.  Must be int", NumQueuesPropertyName));
                }
            }

            this.providerName = providerName;
            streamQueueMapper = new HashRingBasedStreamQueueMapper(numQueues, providerName);
            adapterCache      = new SimpleQueueAdapterCache(cacheSize, logger);
            if (StreamFailureHandlerFactory == null)
            {
                StreamFailureHandlerFactory =
                    qid => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler(false));
            }
        }
        public void Init(IProviderConfiguration config, string providerName, Logger logger, IServiceProvider serviceProvider)
        {
            _config       = new RabbitMQStreamProviderConfig(config);
            _providerName = providerName;
            _logger       = logger;

            _mapper.Init(logger);

            _cacheSize    = SimpleQueueAdapterCache.ParseSize(config, 4096);
            _adapterCache = new SimpleQueueAdapterCache(_cacheSize, logger);

            _streamQueueMapper = new HashRingBasedStreamQueueMapper(_config.NumQueues, _providerName);

            if (StreamFailureHandlerFactory == null)
            {
                StreamFailureHandlerFactory =
                    qid => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler(false));
            }
        }
Example #9
0
        public void Init(IProviderConfiguration config, string providerName, IServiceProvider serviceProvider)
        {
            _config       = serviceProvider.GetRequiredService <RabbitMQStreamProviderOptions>();
            _providerName = providerName;
            _loggeFactory = serviceProvider.GetRequiredService <ILoggerFactory>();

            _mapper = serviceProvider.GetRequiredService <IRabbitMQMapper>();
            _mapper.Init();

            _cacheSize    = SimpleQueueAdapterCache.ParseSize(config, 4096);
            _adapterCache = new SimpleQueueAdapterCache(_cacheSize, providerName, _loggeFactory);

            _streamQueueMapper = new HashRingBasedStreamQueueMapper(_config.NumberOfQueues, _providerName);

            if (StreamFailureHandlerFactory == null)
            {
                StreamFailureHandlerFactory =
                    qid => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler(false));
            }
        }
        public EventStoreAdapterFactory(string providerName, EventStoreRepositoryConfiguration eventStoreRepositoryConfiguration, ILoggerFactory loggerFactory)
        {
            _loggerFactory = loggerFactory;
            _providerName  = providerName;

            _eventStoreRepositoryConfiguration = eventStoreRepositoryConfiguration;

            var options = new SimpleQueueCacheOptions()
            {
                CacheSize = 100
            };

            _eventStoreQueueAdapterCache = new SimpleQueueAdapterCache(options, _providerName, _loggerFactory);

            var hashRingStreamQueueMapperOptions = new HashRingStreamQueueMapperOptions()
            {
                TotalQueueCount = 1
            };

            _streamQueueMapper = new HashRingBasedStreamQueueMapper(hashRingStreamQueueMapperOptions, _providerName);
        }
Example #11
0
        public void Init(IProviderConfiguration config, string providerName, Logger logger, IServiceProvider serviceProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            _configuration = new RabbitMQStreamProviderConfiguration(config);
            _logger        = logger;
            _providerName  = providerName;

            _cacheSize = SimpleQueueAdapterCache.ParseSize(config, 4096);

            _streamQueueMapper = new HashRingBasedStreamQueueMapper(_configuration.NumQueues, providerName);
            _adapterCache      = new SimpleQueueAdapterCache(_cacheSize, logger);

            if (StreamFailureHandlerFactory == null)
            {
                StreamFailureHandlerFactory =
                    qid => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler(false));
            }

            this.SerializationManager = serviceProvider.GetRequiredService <SerializationManager>();
            _adaptorFactory           = () => ActivatorUtilities.GetServiceOrCreateInstance <TDataAdapter>(serviceProvider);
        }
Example #12
0
        public virtual void Init(IProviderConfiguration config, string providerName, IServiceProvider serviceProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            if (!config.Properties.TryGetValue(PubSubAdapterConstants.PROJECT_ID, out _projectId))
            {
                throw new ArgumentException($"{PubSubAdapterConstants.PROJECT_ID} property not set");
            }
            if (!config.Properties.TryGetValue(PubSubAdapterConstants.TOPIC_ID, out _topicId))
            {
                throw new ArgumentException($"{PubSubAdapterConstants.TOPIC_ID} property not set");
            }
            if (!config.Properties.TryGetValue(PubSubAdapterConstants.DEPLOYMENT_ID, out _deploymentId))
            {
                throw new ArgumentException($"{PubSubAdapterConstants.DEPLOYMENT_ID} property not set");
            }

            loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();

            config.Properties.TryGetValue(PubSubAdapterConstants.CUSTOM_ENDPOINT, out _customEndpoint);

            string deadlineStr;

            if (config.Properties.TryGetValue(PubSubAdapterConstants.DEADLINE, out deadlineStr))
            {
                int seconds;
                if (!int.TryParse(deadlineStr, out seconds))
                {
                    throw new ArgumentException(
                              $"Failed to parse {PubSubAdapterConstants.DEADLINE} value '{deadlineStr}' as a TimeSpan");
                }

                _deadline = TimeSpan.FromSeconds(seconds);

                if (_deadline == TimeSpan.MinValue || _deadline > PubSubAdapterConstants.MAX_DEADLINE)
                {
                    _deadline = PubSubAdapterConstants.MAX_DEADLINE;
                }
            }
            else
            {
                _deadline = null;
            }

            _cacheSize = SimpleQueueAdapterCache.ParseSize(config, PubSubAdapterConstants.CACHE_SIZE_DEFAULT);

            string numSubscriptionsString;

            _numSubscriptions = PubSubAdapterConstants.NUMBER_SUBSCRIPTIONS_DEFAULT;
            if (config.Properties.TryGetValue(PubSubAdapterConstants.NUMBER_SUBSCRIPTIONS, out numSubscriptionsString))
            {
                if (!int.TryParse(numSubscriptionsString, out _numSubscriptions))
                {
                    throw new ArgumentException($"{PubSubAdapterConstants.NUMBER_SUBSCRIPTIONS} invalid.  Must be int");
                }
            }

            _providerName      = providerName;
            _streamQueueMapper = new HashRingBasedStreamQueueMapper(_numSubscriptions, providerName);
            _adapterCache      = new SimpleQueueAdapterCache(_cacheSize, providerName, loggerFactory);
            if (StreamFailureHandlerFactory == null)
            {
                StreamFailureHandlerFactory =
                    qid => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler());
            }

            SerializationManager = serviceProvider.GetRequiredService <SerializationManager>();
            _adaptorFactory      = () => ActivatorUtilities.GetServiceOrCreateInstance <TDataAdapter>(serviceProvider);
        }