public MQRpcClient(string serverName, MQRpcClientBase client, int timeOut) { mqRpc = client; TimeOut = timeOut; ServerId = serverName.ToLower(); Encode = Encoding.UTF8; }
/// <summary> /// 在指定的MQ上创建RPC客户端工厂 /// </summary> /// <param name="builder"></param> /// <param name="clientName"></param> /// <param name="mqname"></param> /// <returns></returns> public static SoaServiceContainerBuilder UseMqRpcClient(this SoaServiceContainerBuilder builder, string clientName, string mqname = "") { if (string.IsNullOrEmpty(clientName)) { return(builder); } var now = DateTime.Now.ToString("MMddHHmmss"); clientName = "rpcC-" + now + "-" + clientName; builder.Services.AddSingleton <IRpcClientFactory, RpcClientFactory>(sp => { var source = sp.GetService <DefaultMqConnectSource>(); var conn = source.Get(mqname) ?? throw new ArgumentNullException(nameof(IRabbitMQPersistentConnection)); var loggerfact = sp.GetService <ILoggerFactory>(); var qps = sp.GetService <IQpsCounter>(); var logger = sp.GetService <ILogger <IMQRpcClient> >(); var rpc = new MQRpcClientBase(conn, clientName, logger, qps); return(new RpcClientFactory(rpc)); }); return(builder); }