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 } } }
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); }