@@ -2,15 +2,14 @@ | |||||
// Licensed under the MIT License. See License.txt in the project root for license information. | // Licensed under the MIT License. See License.txt in the project root for license information. | ||||
// ReSharper disable once CheckNamespace | // ReSharper disable once CheckNamespace | ||||
using System; | |||||
using RabbitMQ.Client; | |||||
namespace DotNetCore.CAP | namespace DotNetCore.CAP | ||||
{ | { | ||||
public class RabbitMQOptions | public class RabbitMQOptions | ||||
{ | { | ||||
/// <summary> | |||||
/// Default value for connection attempt timeout, in milliseconds. | |||||
/// </summary> | |||||
public const int DefaultConnectionTimeout = 30 * 1000; | |||||
/// <summary> | /// <summary> | ||||
/// Default password (value: "guest"). | /// Default password (value: "guest"). | ||||
/// </summary> | /// </summary> | ||||
@@ -63,21 +62,6 @@ namespace DotNetCore.CAP | |||||
/// </summary> | /// </summary> | ||||
public string ExchangeName { get; set; } = DefaultExchangeName; | public string ExchangeName { get; set; } = DefaultExchangeName; | ||||
/// <summary> | |||||
/// Timeout setting for connection attempts (in milliseconds). | |||||
/// </summary> | |||||
public int RequestedConnectionTimeout { get; set; } = DefaultConnectionTimeout; | |||||
/// <summary> | |||||
/// Timeout setting for socket read operations (in milliseconds). | |||||
/// </summary> | |||||
public int SocketReadTimeout { get; set; } = DefaultConnectionTimeout; | |||||
/// <summary> | |||||
/// Timeout setting for socket write operations (in milliseconds). | |||||
/// </summary> | |||||
public int SocketWriteTimeout { get; set; } = DefaultConnectionTimeout; | |||||
/// <summary> | /// <summary> | ||||
/// The port to connect on. | /// The port to connect on. | ||||
/// </summary> | /// </summary> | ||||
@@ -87,5 +71,10 @@ namespace DotNetCore.CAP | |||||
/// Gets or sets queue message automatic deletion time (in milliseconds). Default 864000000 ms (10 days). | /// Gets or sets queue message automatic deletion time (in milliseconds). Default 864000000 ms (10 days). | ||||
/// </summary> | /// </summary> | ||||
public int QueueMessageExpires { get; set; } = 864000000; | public int QueueMessageExpires { get; set; } = 864000000; | ||||
/// <summary> | |||||
/// RabbitMQ native connection factory options | |||||
/// </summary> | |||||
public Action<ConnectionFactory> ConnectionFactoryOptions { get; set; } | |||||
} | } | ||||
} | } |
@@ -6,7 +6,6 @@ using System.Collections.Concurrent; | |||||
using System.Diagnostics; | using System.Diagnostics; | ||||
using System.Threading; | using System.Threading; | ||||
using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||
using Newtonsoft.Json; | |||||
using RabbitMQ.Client; | using RabbitMQ.Client; | ||||
namespace DotNetCore.CAP.RabbitMQ | namespace DotNetCore.CAP.RabbitMQ | ||||
@@ -42,7 +41,7 @@ namespace DotNetCore.CAP.RabbitMQ | |||||
Exchange = options.ExchangeName + "." + capOptions.Version; | Exchange = options.ExchangeName + "." + capOptions.Version; | ||||
} | } | ||||
_logger.LogDebug("RabbitMQ configuration of CAP :{0} {1}", Environment.NewLine, JsonConvert.SerializeObject(options, Formatting.Indented)); | |||||
_logger.LogDebug($"RabbitMQ configuration:'HostName:{options.HostName}, Port:{options.Port}, UserName:{options.UserName}, Password:{options.Password}, ExchangeName:{options.ExchangeName}'"); | |||||
} | } | ||||
IModel IConnectionChannelPool.Rent() | IModel IConnectionChannelPool.Rent() | ||||
@@ -88,19 +87,18 @@ namespace DotNetCore.CAP.RabbitMQ | |||||
UserName = options.UserName, | UserName = options.UserName, | ||||
Port = options.Port, | Port = options.Port, | ||||
Password = options.Password, | Password = options.Password, | ||||
VirtualHost = options.VirtualHost, | |||||
RequestedConnectionTimeout = options.RequestedConnectionTimeout, | |||||
SocketReadTimeout = options.SocketReadTimeout, | |||||
SocketWriteTimeout = options.SocketWriteTimeout | |||||
VirtualHost = options.VirtualHost | |||||
}; | }; | ||||
if (options.HostName.Contains(",")) | if (options.HostName.Contains(",")) | ||||
{ | { | ||||
options.ConnectionFactoryOptions?.Invoke(factory); | |||||
return () => factory.CreateConnection( | return () => factory.CreateConnection( | ||||
options.HostName.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)); | options.HostName.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)); | ||||
} | } | ||||
factory.HostName = options.HostName; | factory.HostName = options.HostName; | ||||
options.ConnectionFactoryOptions?.Invoke(factory); | |||||
return () => factory.CreateConnection(); | return () => factory.CreateConnection(); | ||||
} | } | ||||