private void CreateModuleIfNeeded(string queueNameReceive, string queueNameResponse, ConsumerQueueTypes type)
        {
            if (!_queues.ContainsKey(queueNameReceive))
            {
                var connection = ConfigurationManager.AppSettings["Connection"];

                switch (type)
                {
                case ConsumerQueueTypes.Poco:
                    _queues.Add(queueNameReceive,
                                _queueContainer.Value.CreateRpc <SimpleResponse, SimpleMessage, PostgreSqlRpcConnection>(
                                    new PostgreSqlRpcConnection(connection, queueNameReceive, connection, queueNameResponse)));
                    break;

                case ConsumerQueueTypes.Method:
                    _queues.Add(queueNameReceive,
                                _queueContainer.Value.CreateMethodRpc(
                                    new PostgreSqlRpcConnection(connection, queueNameReceive, connection, queueNameResponse)));
                    break;
                }

                QueueStatus?.AddStatusProvider(QueueStatusContainer.Value.CreateStatusProvider <PostgreSqlMessageQueueInit>(queueNameReceive, connection));
                QueueStatus?.AddStatusProvider(QueueStatusContainer.Value.CreateStatusProvider <PostgreSqlMessageQueueInit>(queueNameResponse, connection));
            }
        }
        protected void CreateModuleIfNeeded(string queueName, ConsumerQueueTypes type)
        {
            if (Queues.ContainsKey(queueName))
            {
                return;
            }

            switch (type)
            {
            case ConsumerQueueTypes.Poco:
                Queues.Add(queueName,
                           _queueContainer.Value.CreateConsumer(queueName,
                                                                ConfigurationManager.AppSettings["Connection"]));
                break;

            case ConsumerQueueTypes.Method:
                Queues.Add(queueName,
                           _queueContainer.Value.CreateMethodConsumer(queueName,
                                                                      ConfigurationManager.AppSettings["Connection"]));
                break;
            }

            QueueStatus?.AddStatusProvider(
                QueueStatusContainer.Value.CreateStatusProvider <TTransportInit>(queueName,
                                                                                 ConfigurationManager.AppSettings["Connection"]));
        }
        protected void CreateModuleIfNeeded(string queueName, ConsumerQueueTypes type = ConsumerQueueTypes.Poco, string workGroupName = null, int concurrencyLevel = 0, int maxQueueSize = 0)
        {
            if (_taskScheduler == null)
            {
                _taskScheduler = _schedulerContainer.Value.CreateTaskScheduler();
                _taskFactory   = _schedulerContainer.Value.CreateTaskFactory(_taskScheduler);
            }

            if (!string.IsNullOrWhiteSpace(queueName) && !Queues.ContainsKey(queueName))
            {
                IConsumerBaseQueue queue = null;
                if (workGroupName != null)
                {
                    if (!_taskScheduler.Started)
                    {
                        _taskScheduler.Start();
                    }

                    var group = _taskScheduler.AddWorkGroup(workGroupName, concurrencyLevel, maxQueueSize);
                    switch (type)
                    {
                    case ConsumerQueueTypes.Poco:
                        queue = _queueContainer.Value.CreateConsumerQueueScheduler(queueName,
                                                                                   ConfigurationManager.AppSettings["Connection"], _taskFactory, group);
                        break;

                    case ConsumerQueueTypes.Method:
                        queue = _queueContainer.Value.CreateConsumerMethodQueueScheduler(queueName,
                                                                                         ConfigurationManager.AppSettings["Connection"], _taskFactory, group);
                        break;
                    }
                }
                else
                {
                    switch (type)
                    {
                    case ConsumerQueueTypes.Poco:
                        queue = _queueContainer.Value.CreateConsumerQueueScheduler(queueName,
                                                                                   ConfigurationManager.AppSettings["Connection"], _taskFactory);
                        break;

                    case ConsumerQueueTypes.Method:
                        queue = _queueContainer.Value.CreateConsumerMethodQueueScheduler(queueName,
                                                                                         ConfigurationManager.AppSettings["Connection"], _taskFactory);
                        break;
                    }
                }

                Queues.Add(queueName, queue);
                QueueStatus?.AddStatusProvider(
                    QueueStatusContainer.Value.CreateStatusProvider <TTransportInit>(queueName,
                                                                                     ConfigurationManager.AppSettings["Connection"]));
            }
        }
Beispiel #4
0
        private void CreateModuleIfNeeded(string queueName, ConsumerQueueTypes type)
        {
            if (!_queues.ContainsKey(queueName))
            {
                switch (type)
                {
                case ConsumerQueueTypes.Poco:
                    _queues.Add(queueName,
                                _queueContainer.Value.CreateProducer <SimpleMessage>(queueName,
                                                                                     ConfigurationManager.AppSettings["Connection"]));
                    break;

                case ConsumerQueueTypes.Method:
                    _queues.Add(queueName,
                                _queueContainer.Value.CreateMethodProducer(queueName,
                                                                           ConfigurationManager.AppSettings["Connection"]));
                    break;
                }
                QueueStatus?.AddStatusProvider(QueueStatusContainer.Value.CreateStatusProvider <SqlServerMessageQueueInit>(queueName, ConfigurationManager.AppSettings["Connection"]));
            }
        }