public virtual void SendMessage(
            object message,
            CorrelationIdAndAddress correlationIdAndAddress,
            Type type)  
        {
            Headers.SetMessageHeader(message, Headers.CorrelationId, correlationIdAndAddress.CorrelationId);

            ////if (!Conventions.Messages(type))
            ////{
            ////    Headers.SetMessageHeader(message, Headers.MessageId, correlationIdAndAddress.CorrelationId);
            ////}

            ////if (Conventions.Events(type))
            ////{
            ////    this.bus.Publish(message);
            ////}
            ////else
            ////{
            ////    var address = !string.IsNullOrEmpty(correlationIdAndAddress.Address)
            ////        ? Address.Parse(correlationIdAndAddress.Address)
            ////        : this.addressDirectory.GetAddress(type);

            ////    this.bus.Send(address, message);
            ////}
        }
        public void ProcessMessage_OrchistratesParticipatingComponentsCorrectly()
        {
            const string NmsType = "TheNmsType";
            const string CorrelationId = "TheCorrelationId";
            const string ReplyToQueue = "TheReplyToQueue";

            var type = typeof(object);
            var deserializedMessage = new object();
            var correlationIdAndAddress = new CorrelationIdAndAddress(null, null);
            var amqMessage = new ActiveMQTextMessage
            {
                NMSType = NmsType,
                CorrelationId = CorrelationId,
                NMSReplyTo = new ActiveMQQueue(ReplyToQueue),
                NMSDestination = new ActiveMQQueue("Doesn't matter"),
            };

            A.CallTo(() => this.messageTypeInterpreter.GetTypeFromNmsType(NmsType)).Returns(type);
            A.CallTo(() => this.messageDeserializer.DeserializeMessage(amqMessage, type)).Returns(deserializedMessage);
            A.CallTo(() => this.correlationIdAndAddressTranscoder.TranscodeCorrelationIdAndAddress(CorrelationId, ReplyToQueue))
                .Returns(correlationIdAndAddress);

            this.testee.ProcessMessage(amqMessage);

            A.CallTo(() => this.messageSender.SendMessage(deserializedMessage, correlationIdAndAddress, type))
                .MustHaveHappened();
        }