示例#1
0
        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();
        }
示例#2
0
        /// <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);
                };
            }
        }
示例#3
0
 /// <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();//默认采用随机算法
 }