Example #1
0
        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();
        }
Example #2
0
        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));
        }