Пример #1
0
        private static IBasicProperties GetBasicProperties(RabbitMqContext rabbitMqContext)
        {
            var basicProperties = new BasicProperties {
                Persistent = rabbitMqContext.Persistent
            };

            return(basicProperties);
        }
Пример #2
0
        /// <summary>
        /// Get existing open connection as IConnection is thread safe.
        /// </summary>
        public IConnection GetConnection(RabbitMqContext rabbitMqContext)
        {
            var         connectionKey = BuildConnectionKey(rabbitMqContext);
            IConnection connection;

            if (_connections.ContainsKey(connectionKey))
            {
                connection = _connections[connectionKey];
                if (connection != null && connection.IsOpen)
                {
                    return(connection);
                }
            }

            lock (_lockObj)
            {
                if (_connections.ContainsKey(connectionKey))
                {
                    connection = _connections[connectionKey];
                    if (connection != null && connection.IsOpen)
                    {
                        return(connection);
                    }
                    else
                    {
                        _connections.Remove(connectionKey);
                    }
                }
                var connectionFactory = new ConnectionFactory
                {
                    HostName            = rabbitMqContext.HostName,
                    RequestedChannelMax = ushort.MaxValue
                };
                connection = connectionFactory.CreateConnection();
                _connections.Add(connectionKey, connection);
                return(connection);
            }
        }
Пример #3
0
 private static string BuildConnectionKey(RabbitMqContext rabbitMqContext)
 {
     return(rabbitMqContext.HostName);
 }