public string MakePayment(CardPayment payment)
        {
            var corrId = Guid.NewGuid().ToString();
            var props = _channel.CreateBasicProperties();
            props.ReplyTo = _replyQueueName;
            props.CorrelationId = corrId;

            _channel.BasicPublish("", "rpc_queue", props, payment.Serialize());

            while (true)
            {
                var ea = _consumer.Queue.Dequeue();

                if (ea.BasicProperties.CorrelationId != corrId) continue;

                var authCode = Encoding.UTF8.GetString(ea.Body);                    
                return authCode;
            }
        }
 public void SendPayment(CardPayment payment)
 {
     SendMessage(payment.Serialize(), "payment.card");
     Console.WriteLine(" Payment Sent {0}, £{1}", payment.CardNumber, 
         payment.Amount);
 }