public ClusterAwareHttpHandler(bool requiresLeader, IEndpointDiscoverer endpointDiscoverer)
 {
     _requiresLeader     = requiresLeader;
     _endpointDiscoverer = endpointDiscoverer;
     _endpoint           = new Lazy <Task <IPEndPoint> >(endpointDiscoverer.DiscoverAsync,
                                                         LazyThreadSafetyMode.ExecutionAndPublication);
 }
Beispiel #2
0
        public MultiChannel(EventStoreClientSettings settings)
        {
            _settings           = settings;
            _endpointDiscoverer = settings.ConnectivitySettings.IsSingleNode
                                ? (IEndpointDiscoverer) new SingleNodeEndpointDiscoverer(settings.ConnectivitySettings.Address)
                                : new GossipBasedEndpointDiscoverer(settings.ConnectivitySettings, new GrpcGossipClient(settings));
            _channels = new ConcurrentDictionary <EndPoint, ChannelBase>();
            _log      = settings.LoggerFactory?.CreateLogger <MultiChannel>() ?? new NullLogger <MultiChannel>();

            if (settings.ConnectivitySettings.KeepAliveInterval < TimeSpan.FromSeconds(10))
            {
                _log.LogWarning("Specified KeepAliveInterval of {interval} is less than recommended 10_000 ms.",
                                settings.ConnectivitySettings.KeepAliveInterval);
            }
        }