static void Main(string[] args) { using (var bus = new MXRabbitClient(ConfigurationManager.AppSettings["rabbitMQConnectionString"]).Bus) { var clientProcessor = new ClientProcessor(new MXBusinessMongoRepository()); bus.Subscribe <IMXEntity>("IMXEntityType", clientProcessor.ProcessClient); var bookProcessor = new BookProcessor(new MXProductCatalogMongoRepository(), new BookSearchRepository()); bus.RespondAsync <IMXEntity, BookQueueResponse>(request => Task.Run(() => { return(bookProcessor.ProcessSingleBookForMongo(request)); }) ); bus.RespondAsync <IList <Book>, BooksQueueResponse>(request => Task.Run(() => { return(bookProcessor.ProcessManyBooksForMongo(request)); }) ); bus.Subscribe <ISearchDocument>("ISearchDocumentType", bookProcessor.ProcessSingleBookForSearch); bus.Subscribe <IList <BookSearchDocument> >("BookSearchDocumentType", bookProcessor.ProcessManyBooksForSearch); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Listening for messages. Hit <return> to quit."); Console.ResetColor(); Console.ReadLine(); } } //End of Main