/// <summary>获取代理客户端</summary> /// <param name="name"></param> /// <returns></returns> protected BrokerClient GetBroker(String name) { if (_Brokers.TryGetValue(name, out var client)) { return(client); } var bk = Brokers?.FirstOrDefault(e => name == null || e.Name == name); if (bk == null) { return(null); } // 实例化客户端 client = new BrokerClient(bk.Addresses) { Id = ClientId, Name = bk.Name, Config = this, Log = Log, }; // 尝试添加 var client2 = _Brokers.GetOrAdd(name, client); if (client2 != client) { return(client2); } client.Start(); return(client); }
/// <summary>获取代理客户端</summary> /// <param name="name"></param> /// <returns></returns> protected BrokerClient GetBroker(String name) { if (_Brokers.TryGetValue(name, out var client)) { return(client); } var bk = Brokers?.FirstOrDefault(e => name == null || e.Name == name); if (bk == null) { return(null); } lock (_Brokers) { if (_Brokers.TryGetValue(name, out client)) { return(client); } // 实例化客户端 client = new BrokerClient(bk.Addresses) { Id = ClientId, Name = bk.Name, Config = this, Log = Log, }; client.Received += (s, e) => { e.Arg = OnReceive(e.Arg); }; client.Start(); // 尝试添加 _Brokers.TryAdd(name, client); return(client); } }