static Program() { // Create the container as usual. container = new Container(); container.Options.DefaultScopedLifestyle = new ThreadScopedLifestyle(); var rpcServer = new ServiceRegistryAddress() { Host = "127.0.0.1", Port = 8500 }; //var userServiceClient = new RpcHttpClient("UserService", rpcServer, RandomLoadBalancer.GetInstance()); var userServiceClient = new RpcTcpClient("UserService", rpcServer, RandomLoadBalancer.GetInstance()); container.Register <IUserService>(() => userServiceClient.UseService <IUserService>(), Lifestyle.Scoped); // Optionally verify the container. container.Verify(); }
/// <summary> /// /// </summary> /// <param name="serviceName"></param> /// <param name="serviceRegistryAddress"></param> /// <param name="loadBalancer"></param> /// <param name="onError"></param> public RpcTcpClient(string serviceName, ServiceRegistryAddress serviceRegistryAddress, ILoadBalancer loadBalancer = null, Action <string, Exception> onError = null) { var consulDiscoveryService = new ConsulDiscoveryService(serviceRegistryAddress, loadBalancer); var service = consulDiscoveryService.GetRpcService(serviceName); if (service == null) { throw new ServiceDiscoveryException($"未发现可用的【{serviceName}】 服务"); } _client = new HproseTcpClient(service.ToString()); if (onError != null) { _client.OnError += (name, e) => { onError(name, e); }; } }
/// <summary> /// /// </summary> /// <param name="registryAddress"></param> public ConsulRegistryService(ServiceRegistryAddress registryAddress) : base(registryAddress) { }
/// <summary> /// /// </summary> /// <param name="registryAddress"></param> /// <param name="loadBalancer"></param> public ConsulDiscoveryService(ServiceRegistryAddress registryAddress, ILoadBalancer loadBalancer = null) : base(registryAddress) { _loadBalancer = loadBalancer ?? new RandomLoadBalancer();//默认采用随机算法 }