public Controller(IConnectionFactory sourceConnectionFactory, string queueName)
 {
     _queueName = queueName;
     _sourceConnection = new RabbitMqConnection(sourceConnectionFactory);
     _sourceChannel = new RabbitMqModel(_sourceConnection);
     _sourceChannel.QueueDeclarePassive(queueName);
     _messageSource = new ConfirmingGetter(_sourceChannel) { QueueName = queueName };
     _messagePublisher = new ConfirmingPublisher(_sourceChannel);
 }
        private void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_sourceConnection != null)
                {
                    _sourceConnection.Dispose();
                    _sourceConnection = null;
                }

                if (_sourceChannel != null)
                {
                    _sourceChannel.Dispose();
                    _sourceChannel = null;
                }
            }
        }
        public async Task SendAndRecieveMessage()
        {
            var queueName = "testqueueB";
            var message = new RabbitMessage() { RoutingKey = queueName, Body = new byte[]{0,1,2,3,4}};
            var messageHandler = new TestMessageHandler();

            var connectionFactory = new ConnectionFactory
                                        {
                                            HostName = "mqBalancer",
                                            UserName = "******",
                                            Password = "******",
                                            RequestedHeartbeat = 5,
                                        };

            using (var connection = new RabbitMqConnection(connectionFactory))
            {
                using (var model = new RabbitMqModel(connection))
                {
                    model.QueueDeclare(queueName, false, true, false, new Dictionary<string, object>());

                    var consumer = model.HandleMessagesAsync(queueName);
                    var publisher = new ConfirmingPublisher(model);
                    await Task.Delay(TimeSpan.FromSeconds(1));
                    publisher.Publish(string.Empty, new[] { message });
                    await consumer.ConsumeMessages(messageHandler, CancellationToken.None);
                }
            }

            var result = messageHandler.LastMessage;
            Assert.That(result.Body, Is.EquivalentTo(message.Body));
        }