Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        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);
        }