static void Main(string[] args) { var cluster = new ClusterHost(); cluster.UseConfig <HostOptions>(new HostOptions() { ClusterID = "test" }); cluster.UseRedisClusterProvider(x => { x.ConnectionString = "localhost:7000,localhost:7001,localhost:7002,syncTimeout=30000,asyncTimeout=30000,allowAdmin=True,connectTimeout=5000,responseTimeout=5000,password=rdc!234"; }); cluster.StartWcfService(); cluster.Start(); Console.WriteLine("start"); Console.ReadLine(); cluster.StopWcfService(); }
public static void StartWcfService(this ClusterHost cluster) { hosts = new List <ServiceHost>(); var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location); var groups = (ServiceModelSectionGroup)config.GetSectionGroup("system.serviceModel"); var routes = new Dictionary <string, string>(); foreach (ServiceElement service in groups.Services.Services) { ServiceHost host = new ServiceHost(Assembly.GetEntryAssembly().GetType(service.Name)); host.Open(); hosts.Add(host); foreach (ServiceEndpoint endpoint in host.Description.Endpoints) { routes.Add(endpoint.Contract.ContractType.FullName, endpoint.ListenUri.ToString()); } } cluster.UseConfig <HostOptions>(new HostOptions() { Address = hosts.FirstOrDefault().BaseAddresses.FirstOrDefault()?.ToString() }); cluster.CurrentNode.Details.Add("contract", JsonConvert.SerializeObject(routes)); }