public void SetUp() { routingTopology = new ConventionalRoutingTopology(true); receivedMessages = new BlockingCollection <IncomingMessage>(); var connectionString = Environment.GetEnvironmentVariable("RabbitMQTransport_ConnectionString"); if (string.IsNullOrEmpty(connectionString)) { throw new Exception("The 'RabbitMQTransport_ConnectionString' environment variable is not set."); } var config = ConnectionConfiguration.Create(connectionString, ReceiverQueue); connectionFactory = new ConnectionFactory(ReceiverQueue, config, null, false, false); channelProvider = new ChannelProvider(connectionFactory, config.RetryDelay, routingTopology, true); channelProvider.CreateConnection(); messageDispatcher = new MessageDispatcher(channelProvider); var purger = new QueuePurger(connectionFactory); messagePump = new MessagePump(connectionFactory, new MessageConverter(), "Unit test", channelProvider, purger, TimeSpan.FromMinutes(2), 3, 0); routingTopology.Reset(connectionFactory, new[] { ReceiverQueue }.Concat(AdditionalReceiverQueues), new[] { ErrorQueue }); subscriptionManager = new SubscriptionManager(connectionFactory, routingTopology, ReceiverQueue); messagePump.Init(messageContext => { receivedMessages.Add(new IncomingMessage(messageContext.MessageId, messageContext.Headers, messageContext.Body)); return(TaskEx.CompletedTask); }, ErrorContext => Task.FromResult(ErrorHandleResult.Handled), new CriticalError(_ => TaskEx.CompletedTask), new PushSettings(ReceiverQueue, ErrorQueue, true, TransportTransactionMode.ReceiveOnly) ).GetAwaiter().GetResult(); messagePump.Start(new PushRuntimeSettings(MaximumConcurrency)); }