public async Task <int> Execute() { try { var configuration = new RabbitMQHostConfiguration(); var configurationManager = new RabbitMQHostConfigurationManager(); await configurationManager.Initialize(configuration); var pingHandler = new PingHandler(Id); configuration.AddHandlingRules(pingHandler, (ht, mt) => "Pings"); var cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = cancellationTokenSource.Token; using (var host = RabbitMQHost.Start(configuration, cancellationToken)) { Console.WriteLine($"[{Id}] Listening..."); await Execute(host, cancellationToken); await UserInterrupt.Wait(cancellationToken); } cancellationTokenSource.Cancel(); } catch (OperationCanceledException) { // Ignore } Console.WriteLine($"[{Id}] Stopping..."); return(0); }