private static IBasicProperties GetBasicProperties(RabbitMqContext rabbitMqContext) { var basicProperties = new BasicProperties { Persistent = rabbitMqContext.Persistent }; return(basicProperties); }
/// <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); } }
private static string BuildConnectionKey(RabbitMqContext rabbitMqContext) { return(rabbitMqContext.HostName); }