/// <summary>
        /// Initializes a Kinect Bag Receiver
        /// </summary>
        /// <param name="ipAddress">IP address of the RabbitMq server</param>
        /// <param name="exchange">Exchange to connect to</param>
        /// <param name="bindingKey">Binding key. The current convention is {sensorId}.{topic}, where topic could be body or gesture.</param>
        /// <param name="username">Username, defaults to guest</param>
        /// <param name="password">Password, defaults to guest</param>
        public KinectBagReceiver(string ipAddress, string exchange, string bindingKey, string username = "******", string password = "******")
        {
            var factory = new ConnectionFactory {
                HostName = ipAddress, UserName = username, Password = password
            };

            _connection = factory.CreateConnection();
            _channel    = _connection.CreateModel();
            _channel.ExchangeDeclare(exchange, "topic");

            // Setting up the ttl to 30ms, since we don't particularly care about outdated frames.
            var queueParams = new Dictionary <string, object> {
                { "x-message-ttl", 30 }
            };
            var queue = _channel.QueueDeclare("", false, true, true, queueParams);

            _channel.QueueBind(queue, exchange, bindingKey);

            Consumer = new KeepLastOnlyConsumer(_channel);
            _channel.BasicConsume(queue, true, Consumer);
        }
 public void Dispose()
 {
     Consumer = null;
     _channel.Dispose();
     _connection.Dispose();
 }