static async Task Main(string[] args)
        {
            Console.WriteLine("Starting service b...");

            IBus bus = RabbitHutch.CreateBus("host=rabbitmq;username=guest;password=guest");
            // RabbitMQ is ready in 10 sec.
            // TODO: Poll to check when RabbitMQ is ready
            await Task.Delay(10 *1000);

            // Setup health check handler
            await bus.Rpc.RespondAsync <ServiceBHealthCheckRequest, ServiceBHealthCheckResponse>(request =>
                                                                                                 new ServiceBHealthCheckResponse()
                                                                                                 );

            // Setup start-work handler
            bus.PubSub.Subscribe <StartWork>("service-b", async msg => {
                Console.WriteLine("StartWork - start");
                for (var i = 0; i < msg.Count; i++)
                {
                    var request  = new ServiceCJokeRequest();
                    var response = await bus.Rpc.RequestAsync <ServiceCJokeRequest, ServiceCJokeResponse>(request);
                    Console.WriteLine(response.Joke);
                }
                Console.WriteLine("StartWork - done");
            });

            // Wait forever
            await Task.Delay(Timeout.Infinite);
        }
        public string GetJoke()
        {
            var request  = new ServiceCJokeRequest();
            var response = _mq.Bus.Rpc.Request <ServiceCJokeRequest, ServiceCJokeResponse>(request);

            return(response.Joke);
        }