From c3ab1ba789e71adce8b4e776296e056a1d3765ed Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Fri, 27 Jul 2018 08:40:15 +0300 Subject: [PATCH] Refactor RabbitMq module --- .../Volo/Abp/RabbitMQ/AbpRabbitMqOptions.cs | 4 ++-- .../Volo/Abp/RabbitMQ/ChannelPool.cs | 2 +- .../Volo/Abp/RabbitMQ/ConnectionPool.cs | 19 ++++++++++--------- .../Volo/Abp/RabbitMQ/RabbitMqConnections.cs | 12 +++++++++++- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/AbpRabbitMqOptions.cs b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/AbpRabbitMqOptions.cs index b5d8c5df30..8f7eadf3ab 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/AbpRabbitMqOptions.cs +++ b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/AbpRabbitMqOptions.cs @@ -2,13 +2,13 @@ { public class AbpRabbitMqOptions { - public RabbitMqConnections Connections { get; } + public RabbitMqConnections ConnectionFactories { get; } public QueueOptionsDictionary Queues { get; } public AbpRabbitMqOptions() { - Connections = new RabbitMqConnections(); + ConnectionFactories = new RabbitMqConnections(); Queues = new QueueOptionsDictionary(); } } diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs index 4b540fabd8..558ef52385 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs +++ b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs @@ -90,7 +90,7 @@ namespace Volo.Abp.RabbitMQ try { poolItem.WaitIfInUse(remainingWaitDuration); - poolItem.Channel.Dispose(); + poolItem.Dispose(); } catch { } diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ConnectionPool.cs b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ConnectionPool.cs index 51ebb1a047..883eaa6ba3 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ConnectionPool.cs +++ b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ConnectionPool.cs @@ -22,15 +22,16 @@ namespace Volo.Abp.RabbitMQ public virtual IConnection Get(string connectionName = null) { - connectionName = connectionName ?? RabbitMqConnections.DefaultConnectionName; - - return Connections.GetOrAdd(connectionName, () => - { - var connectionFactory = Options.Connections.GetOrDefault(connectionName) - ?? Options.Connections.Default; - - return connectionFactory.CreateConnection(); - }); + connectionName = connectionName + ?? RabbitMqConnections.DefaultConnectionName; + + return Connections.GetOrAdd( + connectionName, + () => Options + .ConnectionFactories + .GetOrDefault(connectionName) + .CreateConnection() + ); } public void Dispose() diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/RabbitMqConnections.cs b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/RabbitMqConnections.cs index 9e543c4091..a30db4c96a 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/RabbitMqConnections.cs +++ b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/RabbitMqConnections.cs @@ -13,7 +13,7 @@ namespace Volo.Abp.RabbitMQ [NotNull] public ConnectionFactory Default { - get => this.GetOrDefault(DefaultConnectionName); + get => this[DefaultConnectionName]; set => this[DefaultConnectionName] = Check.NotNull(value, nameof(value)); } @@ -21,5 +21,15 @@ namespace Volo.Abp.RabbitMQ { Default = new ConnectionFactory(); } + + public ConnectionFactory GetOrDefault(string connectionName) + { + if (TryGetValue(connectionName, out var connectionFactory)) + { + return connectionFactory; + } + + return Default; + } } } \ No newline at end of file