예제 #1
0
        public static RabbitMQAdapterReceiver Create(RabbitMQStreamProviderConfiguration configuration, string providerName,
                                                     SerializationManager serializationManager, QueueId queueId, IRabbitMQDataAdapter dataAdapter, Logger logger)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            if (queueId == null)
            {
                throw new ArgumentNullException(nameof(queueId));
            }
            if (dataAdapter == null)
            {
                throw new ArgumentNullException(nameof(dataAdapter));
            }
            if (serializationManager == null)
            {
                throw new ArgumentNullException(nameof(serializationManager));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            var queue = RabbitMQResourceManager.CreateQueueDataManager(providerName, configuration,
                                                                       $"{providerName}_Consumer", logger);

            return(new RabbitMQAdapterReceiver(configuration, providerName, serializationManager, queueId, queue, dataAdapter, logger));
        }
예제 #2
0
 public RabbitMQAdapterReceiver(RabbitMQStreamProviderConfiguration configuration, string providerName, SerializationManager serializationManager, QueueId queueId, RabbitMQMessageQueueDataManager queue, IRabbitMQDataAdapter dataAdapter, Logger logger)
 {
     _configuration        = configuration;
     _providerName         = providerName;
     _serializationManager = serializationManager;
     _queue       = queue;
     _dataAdapter = dataAdapter;
     Id           = queueId;
     _logger      = logger;
     _pending     = new List <PendingDelivery>();
 }
예제 #3
0
        public RabbitMQMessageQueueDataManager(RabbitMQStreamProviderConfiguration configuration, string connectionName,
                                               Logger logger)
        {
            _configuration  = configuration;
            _connectionName = connectionName;
            _logger         = logger;
            var connectionFactory = configuration.ToConnectionFactory();

            _connection = connectionFactory.CreateConnection($"{connectionName}");
            _channel    = _connection.CreateModel();
            _props      = GetBasicParameters();
        }
예제 #4
0
 public RabbitMQAdapter(TDataAdapter dataAdapter,
                        SerializationManager serializationManager,
                        HashRingBasedStreamQueueMapper streamQueueMapper,
                        RabbitMQStreamProviderConfiguration configuration,
                        string providerName,
                        Logger logger)
 {
     _dataAdapter          = dataAdapter;
     _serializationManager = serializationManager;
     _streamQueueMapper    = streamQueueMapper;
     _configuration        = configuration;
     _logger = logger;
     Name    = providerName;
 }
예제 #5
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);
        }
예제 #6
0
        public static RabbitMQMessageQueueDataManager CreateQueueDataManager(string providerName, RabbitMQStreamProviderConfiguration configuration, string connectionName,
                                                                             Logger logger)
        {
            var queue = new RabbitMQMessageQueueDataManager(configuration, connectionName, logger);
            List <RabbitMQMessageQueueDataManager> queues;

            if (QueueDataManagers.TryGetValue(providerName, out queues))
            {
                queues.Add(queue);
            }
            else
            {
                queues = new List <RabbitMQMessageQueueDataManager> {
                    queue
                };
                QueueDataManagers.TryAdd(providerName, queues);
            }
            return(queue);
        }