Beispiel #1
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            IMessageStream <PublishDocumentMessage> eventStream =
                await _messageReceiver.SubscribeAsync(stoppingToken).ConfigureAwait(false);

            await foreach (PublishDocumentMessage? message in
                           eventStream.WithCancellation(stoppingToken))
            {
                if (message is null)
                {
                    break;
                }

                try
                {
                    foreach (IPublishDocumentHandler handler in _publishDocumentHandlers)
                    {
                        if (await handler.CanHandleAsync(message, stoppingToken).ConfigureAwait(false))
                        {
                            await handler.HandleAsync(message, stoppingToken).ConfigureAwait(false);

                            break;
                        }
                    }

                    await eventStream.CompleteAsync().ConfigureAwait(false);
                }
                catch { }
            }
        }