示例#1
0
 public MQRpcClient(string serverName, MQRpcClientBase client, int timeOut)
 {
     mqRpc    = client;
     TimeOut  = timeOut;
     ServerId = serverName.ToLower();
     Encode   = Encoding.UTF8;
 }
示例#2
0
        /// <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);
        }