public void QueueUnbind(RabbitMQQueueDeclaration declaration, RabbitMQQueueBindingDeclaration binding)
 {
     lock (@lock)
     {
         channel.QueueUnbind(
             declaration.Name,
             binding.ExchangeDeclaration.Name,
             binding.RoutingKey ?? declaration.Name,
             binding.Arguments);
     }
 }
        private static IRabbitMQQueueBuilder <TPayload> BoundTo <TPayload>(
            this IRabbitMQQueueBuilder <TPayload> builder,
            IRabbitMQExchangeBuilderCore exchange,
            Action <IRabbitMQQueueBindingBuilder> binding)
        {
            if (exchange is null)
            {
                throw new ArgumentNullException(nameof(exchange));
            }

            var declaration = new RabbitMQQueueBindingDeclaration(exchange.ExchangeDeclaration);

            binding?.Invoke(new RabbitMQQueueBindingBuilder(declaration));

            builder.Declaration.BindingDeclarations.Add(declaration);

            return(builder);
        }