Ejemplo n.º 1
0
        private async Task CreateConnectionsAsync(string connectionName)
        {
            for (int i = 0; i < _connectionsToMaintain; i++)
            {
                try
                {
                    var connection = await CreateConnection($"{connectionName}:PoolConnection:{i}").ConfigureAwait(false);

                    if (connection is null)
                    {
                        throw new ArgumentNullException(nameof(connection));
                    }

                    ConnectionPool.Enqueue(connection);
                }
                catch (ArgumentNullException ane)
                {
                    if (Seasoning.WriteErrorsToConsole)
                    {
                        await Console.Out.WriteLineAsync(ane.Message).ConfigureAwait(false);
                    }
                    throw; // Non Optional Throw
                }
                catch (RabbitMQ.Client.Exceptions.BrokerUnreachableException bue)
                {
                    if (Seasoning.WriteErrorsToConsole)
                    {
                        await Console.Out.WriteLineAsync(bue.Message).ConfigureAwait(false);
                    }
                    throw; // Non Optional Throw
                }
            }
        }
Ejemplo n.º 2
0
        public IConnection GetConnection()
        {
            if (_shutdown)
            {
                throw new Exception("Connection pool is shut down. Class needs to Initialize again to use object.");
            }

            if (ConnectionPool.TryDequeue(out IConnection connection))
            {
                if (connection != null)
                {
                    ConnectionPool.Enqueue(connection);
                }
                else
                {
                    connection = ConnectionFactory.CreateConnection(Seasoning.PoolSettings.ConnectionName);
                }
            }

            return(connection);
        }