protected override async Task OnStart(IMessageSession session) { Logger.Write(LogLevel.Info, "Starting event consumer"); await _subscriber.Setup( _settings.EndpointName(), _settings.Get <int>("ReadSize"), _settings.Get <bool>("ExtraStats")).ConfigureAwait(false); await _subscriber.Subscribe(_cancellationTokenSource.Token).ConfigureAwait(false); _subscriber.Dropped = (reason, ex) => { if (_cancellationTokenSource.IsCancellationRequested) { Logger.Write(LogLevel.Info, () => $"Event consumer stopped - cancelation requested"); return; } Logger.Warn($"Event consumer stopped due to exception: {ex.Message}. Will restart", ex); Thread.Sleep(CalculateSleep()); _subscriber.Subscribe(_cancellationTokenSource.Token).Wait(); }; }