public async Task RegisterAsync(ServiceDiscoveryOptions serviceDiscoveryOptions) { ValidateOptions(serviceDiscoveryOptions); var agentServiceRegistration = CreateAgentServiceRegistration(serviceDiscoveryOptions.ServiceOptions); var registerServiceEventArgument = new RegisterServiceEventArgument { AgentServiceRegistration = agentServiceRegistration, ServerOptions = serviceDiscoveryOptions.ServerOptions }; await RegisterService(registerServiceEventArgument); }
private async Task RegisterService(RegisterServiceEventArgument argument) { try { _logger?.LogInformation("Registering service in service discovery application..."); using (var client = new ConsulClient((configuration) => { configuration.Address = new Uri(argument.ServerOptions.Address); })) { bool isAlreadyRegistered = await IsServiceAlreadyRegisteredAsync(client, argument.AgentServiceRegistration.ID); if (!isAlreadyRegistered) { _logger?.LogInformation($"Sending information about service to service discovery application [address: {argument.AgentServiceRegistration.Address}, port: {argument.AgentServiceRegistration.Port}]..."); var writeResult = await client.Agent.ServiceRegister(argument.AgentServiceRegistration); if (!RegistrationWasSuccessfull(writeResult)) { throw new ServiceDiscoveryResponseException("Registration in service discovery application failed."); } _logger?.LogInformation("Registration in service discovery application complete."); } } } catch (ServiceDiscoveryResponseException exception) { _logger?.LogWarning("Service discovery application is not running."); _logger?.LogWarning($"Exception ({exception.GetType()}): {exception.Message}"); } catch (Exception exception) { _logger?.LogWarning("Unexpected exception from service discovery application."); _logger?.LogWarning($"Exception ({exception.GetType()}): {exception.Message}"); } }