Ejemplo n.º 1
0
        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();
            };
        }