public RemoteInvokeService(IHashAlgorithm hashAlgorithm, IAddressResolver addressResolver, ITransportClientFactory transportClientFactory, ILogger <RemoteInvokeService> logger, IHealthCheckService healthCheckService) { _addressResolver = addressResolver; _transportClientFactory = transportClientFactory; _logger = logger; _healthCheckService = healthCheckService; }
public RemoteInvokeService(IAddressResolver addressResolver, ITransportClientFactory transportClientFactory, ILogger<RemoteInvokeService> logger, IHealthCheckService healthCheckService) { _addressResolver = addressResolver; _transportClientFactory = transportClientFactory; _logger = logger; _healthCheckService = healthCheckService; }
public MqttRemoteInvokeService(ITransportClientFactory transportClientFactory, ILogger <MqttRemoteInvokeService> logger, IHealthCheckService healthCheckService, IMqttBrokerEntryManger mqttBrokerEntryManger) { _transportClientFactory = transportClientFactory; _logger = logger; _healthCheckService = healthCheckService; _mqttBrokerEntryManger = mqttBrokerEntryManger; }
public RtmpRemoteInvokeService(IServiceRouteProvider serviceRotueProvider, ILogger <RtmpRemoteInvokeService> logger, IHealthCheckService healthCheckService, ITransportClientFactory transportClientFactory) { _serviceRotueProvider = serviceRotueProvider; _logger = logger; _healthCheckService = healthCheckService; _transportClientFactory = transportClientFactory; _routePath = RoutePatternParser.Parse(AppConfig.Option.RouteTemplate, "ILiveRomtePublishService", "Publish"); }
public DotNettyRemoteServiceInvoker(ServiceRouteCache serviceRouteCache, IRemoteServiceSupervisor remoteServiceSupervisor, ITransportClientFactory transportClientFactory, IHealthCheck healthCheck) { _serviceRouteCache = serviceRouteCache; _remoteServiceSupervisor = remoteServiceSupervisor; _transportClientFactory = transportClientFactory; _healthCheck = healthCheck; Logger = NullLogger <DotNettyRemoteServiceInvoker> .Instance; }
public RemoteServiceCaller(IClientServiceDiscovery serviceDiscovery, IAddressSelector addressSelector, ITransportClientFactory transportClientFactory, ITypeConvertProvider typeConvertProvider, IServiceTokenGetter serviceTokenGetter, ILogger logger, int retryTimes = -1) { _serviceDiscovery = serviceDiscovery; _addressSelector = addressSelector; _transportClientFactory = transportClientFactory; _typeConvertProvider = typeConvertProvider; _serviceTokenGetter = serviceTokenGetter; _logger = logger; _retryTimes = retryTimes; }
public RemoteServiceExecutor(IClientServiceDiscovery serviceDiscovery, IAddressSelector addressSelector, IServiceTokenGetter serviceTokenGetter, ITransportClientFactory transportClientFactory, ITypeConvertProvider typeConvertProvider, ILogger logger, ISerializer serializer, IAuthorizationHandler authorizationHandler = null, ICache <string, List <ServerAddress> > cache = null, int retryTimes = -1) { _serviceDiscovery = serviceDiscovery; _addressSelector = addressSelector; _transportClientFactory = transportClientFactory; _typeConvertProvider = typeConvertProvider; _serviceTokenGetter = serviceTokenGetter; _authorizationHandler = authorizationHandler; _cache = cache; _logger = logger; _retryTimes = retryTimes; _serializer = serializer; }
public static IServiceHostClientBuilder UseRpcForTransfer(this IServiceHostClientBuilder serviceHostBuilder) { serviceHostBuilder.AddInitializer(container => { ITransportClientFactory factory = container.Resolve <ITransportClientFactory>(); ILogger logger = container.Resolve <ILogger>(); ISerializer serializer = container.Resolve <ISerializer>(); Bootstrap bootstrap = new Bootstrap(); logger.Info($"启动rpc客户端"); bootstrap .Group(new MultithreadEventLoopGroup()) .Channel <TcpSocketChannel>() .Option(ChannelOption.TcpNodelay, true) .Handler(new ActionChannelInitializer <IChannel>(channel => { IChannelPipeline pipeline = channel.Pipeline; pipeline.AddLast(new LengthFieldPrepender(4)); pipeline.AddLast(new LengthFieldBasedFrameDecoder(int.MaxValue, 0, 4, 0, 4)); pipeline.AddLast(new ReadClientMessageChannelHandler(serializer)); pipeline.AddLast(new RpcClientHandler(factory)); })); AttributeKey <IClientSender> clientSenderKey = AttributeKey <IClientSender> .ValueOf(typeof(DefaultTransportClientFactory), nameof(IClientSender)); AttributeKey <IClientListener> clientListenerKey = AttributeKey <IClientListener> .ValueOf(typeof(DefaultTransportClientFactory), nameof(IClientListener)); factory.ClientCreatorDelegate += (ServerAddress address, ref ITransportClient client) => { if (client == null && address.ServerFlag == ServerFlag.Rpc) { EndPoint ep = address.CreateEndPoint(); IChannel channel = bootstrap.ConnectAsync(ep).Result; RpcClientListener listener = new RpcClientListener(); channel.GetAttribute(clientListenerKey).Set(listener); RpcClientSender sender = new RpcClientSender(channel, serializer); channel.GetAttribute(clientSenderKey).Set(sender); client = new DefaultTransportClient(listener, sender, serializer, logger); } }; }); return(serviceHostBuilder); }
internal static void Test() { Task.Run(async() => { do { Console.WriteLine("正在循环 1万次发送消息....."); //1w次调用 var watch = Stopwatch.StartNew(); for (var i = 1; i < 10000; i++) { var invokeMessage = new TransportMessage { Id = i.ToString(), ContentType = "string", Content = "你好啊,这是客户端发给服务端的消息" }; try { var endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 981); ITransportClientFactory transportClientFactory = _container.Resolve <ITransportClientFactory>(); var client = await transportClientFactory.CreateClientAsync(endPoint); await client.SendAsync(invokeMessage); } catch (Exception exception) { Console.WriteLine(exception.ToString(), $"发起请求中发生了错误,服务Id:{invokeMessage.Id}。"); throw; } } watch.Stop(); Console.WriteLine($"1万次发送结束,执行时间:{watch.ElapsedMilliseconds}ms"); Console.WriteLine("Press any key to continue, q to exit the loop..."); var key = Console.ReadLine(); if (key.ToLower() == "q") { break; } } while (true); }).Wait(); }
public DefaultTransportDispatcher(ITransportClientFactory transportClientFactory, TransportClientOptions clientOptions) { _transportClientFactory = transportClientFactory ?? throw new ArgumentNullException(nameof(transportClientFactory)); _clientOptions = clientOptions ?? throw new ArgumentNullException(nameof(clientOptions)); }
public RemoteInvokeService(IAddressResolver addressResolver, ITransportClientFactory transportClientFactory, ILogger<RemoteInvokeService> logger) { _addressResolver = addressResolver; _transportClientFactory = transportClientFactory; _logger = logger; }
public RemoteInvokeService(ITransportClientFactory transportClientFactory, ILogger <RemoteInvokeService> logger) { _transportClientFactory = transportClientFactory; _logger = logger; }
public ClientHandlerChannelHandlerAdapter(ITransportClientFactory factory , ILogger logger) { _factory = factory; _logger = logger; }
public RemoteInvokeService(IAddressResolver addressResolver, ITransportClientFactory transportClientFactory, ILogger <RemoteInvokeService> logger) { _addressResolver = addressResolver; _transportClientFactory = transportClientFactory; _logger = logger; }
public RpcClientHandler(ITransportClientFactory factory) { _factory = factory; }