/// <summary>
        /// Interface method to start service
        /// </summary>
        protected async override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            await Task.Yield();

            if (!settings.Enabled)
            {
                logger.LogInformation("ReceiverHostedService is not enabled");
            }
            else if (settings.MessageTypes == null)
            {
                logger.LogError("Configuration error:  No event types have been configured for the receiverhostedeservice");
            }
            else
            {
                while (!stoppingToken.IsCancellationRequested)
                {
                    if (receiver == null || receiver.Link == null || receiver.Link.IsClosed)
                    {
                        DisposeReceiver();
                        receiver = services.GetService <IDomainEventReceiver>();
                        logger.LogInformation($"Starting receiver...");
                        try {
                            receiver.StartAndListen(settings.MessageTypes);
                            logger.LogInformation("Receiver started");
                        } catch (Exception e) {
                            logger.LogCritical($"Unable to start receiver. \n {e}");
                        }
                        receiver.Closed += OnReceiverClosed;
                    }
                    await Task.Delay(TimeSpan.FromSeconds(settings.TimedInterval)).ConfigureAwait(false);
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Interface method to start service
 /// </summary>
 protected async override Task ExecuteAsync(CancellationToken cancellationToken)
 {
     if (settings.Disabled)
     {
         logger.LogInformation("Receiverhostedservice is disabled");
     }
     else if (settings.MessageTypes == null)
     {
         logger.LogError("Configuration error:  No event types have been configured for the receiverhostedeservice");
     }
     else
     {
         while (!cancellationToken.IsCancellationRequested)
         {
             if (receiver == null || receiver.Link == null || receiver.Link.IsClosed)
             {
                 DisposeReceiver();
                 receiver = services.GetService <IDomainEventReceiver>();
                 logger.LogInformation($"Starting receiver...");
                 try {
                     receiver.Receive(settings.MessageTypes);
                     logger.LogInformation("Receiver started");
                 } catch (Exception e) {
                     logger.LogCritical($"Unable to start receiver. \n {e}");
                 }
                 receiver.Closed += OnReceiverClosed;
             }
             await Task.Delay(settings.TimedInterval);
         }
     }
 }
 private void CloseReceiver()
 {
     try {
         receiver?.Close();
     } catch {
         // disregard while shutting things down
     } finally {
         receiver = null;
     }
 }
 private void OnReceiverClosed(IDomainEventReceiver receiver, DomainEventError error)
 {
     if (error == null)
     {
         logger.LogError("Handling OnReceiverClosed event with no error information");
     }
     else
     {
         logger.LogError($"Handling OnReceiverClosed event with error: {error.Condition} - {error.Description}");
     }
 }
        /// <summary>
        /// Interface method to start service
        /// </summary>
        public Task StartAsync(CancellationToken cancellationToken)
        {
            logger.LogInformation("Receive Hosted Service is starting.");

            var eventTypeLookup = RegisterMessageTypes();

            receiver = services.GetService <IDomainEventReceiver>();

            logger.LogInformation("Starting receiver");
            receiver.Closed += OnReceiverClosed;
            receiver.Receive(eventTypeLookup);
            logger.LogInformation("Receiver started");

            return(Task.CompletedTask);
        }
 private void OnReceiverClosed(IDomainEventReceiver receiver, DomainEventError error)
 {
     logger.LogError($"Receiver closed: {error.Condition} - {error.Description}");
 }