/// <summary> 创建客户端 </summary> /// <param name="serviceAddress"></param> /// <returns></returns> protected override Task <IMicroClient> Create(ServiceAddress serviceAddress) { Logger.LogDebug($"创建客户端:{serviceAddress}创建客户端。"); var listener = new MessageListener(); var sender = new HttpClientMessageSender(Provider, serviceAddress, listener); IMicroClient client = new MicroClient(sender, listener, MicroExecutor, LoggerFactory); return(Task.FromResult(client)); }
public ServerContainer(IWebHost webHost, Server server, string serverUrl, HttpClientMessageSender messageSender, ServerInCluster serverInCluster, IMessageBus messageBus, IStateMachine stateMachine) { StateMachine = stateMachine; MessageBus = messageBus; WebHost = webHost; Server = server; ServerUrl = serverUrl; MessageSender = messageSender; ServerInCluster = serverInCluster; }
public IMicroClient CreateClient(ServiceAddress serviceAddress) { var lazyClient = _clients.GetOrAdd(serviceAddress, k => new Lazy <IMicroClient>(() => { _logger.LogDebug($"创建客户端:{serviceAddress}创建客户端。"); var listener = new MessageListener(); var sender = new HttpClientMessageSender(_logger, _clientFactory, _codecFactory, serviceAddress.ToString(), listener); return(new MicroClient(_logger, sender, listener, _microExecutor)); } )); return(lazyClient.Value); }
/// <summary> 创建客户端 </summary> /// <param name="serviceAddress"></param> /// <returns></returns> public Task <IMicroClient> CreateClient(ServiceAddress serviceAddress) { var lazyClient = _clients.GetOrAdd(serviceAddress, k => new Lazy <Task <IMicroClient> >(() => { _logger.LogDebug($"创建客户端:{serviceAddress}创建客户端。"); var listener = new MessageListener(); var url = serviceAddress.ToString(); var sender = new HttpClientMessageSender(_loggerFactory, _clientFactory, _codecFactory, url, listener); IMicroClient client = new MicroClient(sender, listener, _microExecutor, _loggerFactory); return(Task.FromResult(client)); } )); return(lazyClient.Value); }
private async Task GivenAServerIsRunning(string baseUrl) { Server server = null; HttpClientMessageSender messageSender = null; ServerInCluster serverInCluster = null; InMemoryBus messageBus = null; IStateMachine stateMachine = null; var webHost = new WebHostBuilder() .UseUrls(baseUrl) .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .ConfigureServices(x => { }) .Configure(app => { var logger = new ConsoleLogger("ConsoleLogger", (x, y) => true, true); messageSender = new HttpClientMessageSender(_serviceRegistry, logger); messageBus = new InMemoryBus(messageSender); stateMachine = new FakeStateMachine(); var result = app.UseRaftyForTesting(new Uri(baseUrl), messageSender, messageBus, stateMachine, _serviceRegistry, logger, _serversInCluster); server = result.server; serverInCluster = result.serverInCluster; }) .Build(); webHost.Start(); var serverContainer = new ServerContainer(webHost, server, baseUrl, messageSender, serverInCluster, messageBus, stateMachine); _servers.Add(serverContainer); }