/// <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); } } }
/// <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}"); }