public async Task <RegistryInformation> RegisterServiceAsync(ServiceConfiguration serviceConfiguration, ProtocolConfiguration protocolConfiguration, Uri healthCheckUri = null, IEnumerable <string> tags = null) { var serviceId = ServiceDiscoveryHelper.GetServiceId(serviceConfiguration.Interface, serviceConfiguration.Port.ToString()); var serviceName = ServiceDiscoveryHelper.GetServiceName(protocolConfiguration.Protocol, serviceConfiguration.Interface); string versionLabel = $"{ServiceDiscoveryHelper.VERSION_PREFIX}{serviceConfiguration.Version}"; var tagList = (tags ?? Enumerable.Empty <string>()).ToList(); tagList.Add(protocolConfiguration.Protocol); tagList.Add(protocolConfiguration.Transmit); tagList.Add(versionLabel); var instance = new RegistryInformation { Name = serviceName, Id = serviceId, Address = await DnsUtil.GetIpAddressAsync(), Port = serviceConfiguration.Port, Version = serviceConfiguration.Version, Tags = tagList }; ServiceInstances.Add(instance); return(instance); }
public async Task <RegistryInformation> RegisterServiceAsync(ServiceConfiguration serviceConfiguration, ProtocolConfiguration protocolConfiguration, Uri healthCheckUri = null, IEnumerable <string> tags = null) { var serviceId = ServiceDiscoveryHelper.GetServiceId(serviceConfiguration.Interface, serviceConfiguration.Port.ToString()); var serviceName = ServiceDiscoveryHelper.GetServiceName(protocolConfiguration.Protocol, serviceConfiguration.Interface); string versionLabel = $"{ServiceDiscoveryHelper.VERSION_PREFIX}{serviceConfiguration.Version}"; var tagList = (tags ?? Enumerable.Empty <string>()).ToList(); tagList.Add(protocolConfiguration.Protocol); tagList.Add(protocolConfiguration.Transmit); tagList.Add(versionLabel); string check = healthCheckUri?.ToString() ?? $""; var agentServiceCheck = protocolConfiguration.Transmit == "tcp" ? new AgentServiceCheck { TCP = check, Interval = TimeSpan.FromSeconds(2) } : new AgentServiceCheck { HTTP = check, Interval = TimeSpan.FromSeconds(2) }; var registration = new AgentServiceRegistration { ID = serviceId, Name = serviceName, Tags = tagList.ToArray(), Address = await DnsUtil.GetIpAddressAsync(), Port = serviceConfiguration.Port, Check = new AgentServiceCheck { HTTP = check, Interval = TimeSpan.FromSeconds(2) } }; await _consul.Agent.ServiceRegister(registration); return(new RegistryInformation { Name = registration.Name, Id = registration.ID, Address = registration.Address, Port = registration.Port, Version = serviceConfiguration.Version, Tags = tagList }); }