Example #1
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                if (!_eventsSubscribed)
                {
                    _eventSubscriber
                    .Subscribe <NewProductAddedEvent>()
                    .OnFailure(cf =>
                    {
                        cf.RetryForTimes(5)
                        .ForEachRetryWait(TimeSpan.FromSeconds(5))
                        .ShouldRetry()
                        .ShouldDiscardEventAfterFailures();
                    });

                    using (var scope = _serviceProvider.CreateScope())
                    {
                        await scope.ServiceProvider.GetService <IEventPublisher>().PublishAsync(new NewProductAddedEvent());
                    }

                    await _eventSubscriber.StartListeningAsync();

                    _eventsSubscribed = true;
                }
            }
        }