public void Send(IEvent message)
        {
            // I won't send null events!
            if (null == message) { throw new ArgumentNullException("message"); }

            // wrap our message in an AMQP envelope
            AmqpEnvelope env = new AmqpEnvelope(message);

            // locate the correct exchange for this topic
            IExchange exchange = _exchangeLocator.GetExchange(env.Topic);

            // add the appropriate headers
            env.EventType = message.GetType().FullName;
            env.SetHeader(AmqpHeaders.SEND_DATETIME, DateTime.Now.ToString());
            env.SetHeader(AmqpHeaders.REPLY_TO_EXCHANGE, exchange.ToUri());

            // place the envelope on the exchange
            exchange.Publish(env);
        }