Search in sources :

Example 1 with EurekaHttpClientFactory

use of com.netflix.discovery.shared.transport.EurekaHttpClientFactory in project eureka by Netflix.

the class MetricsCollectingEurekaHttpClient method createFactory.

public static EurekaHttpClientFactory createFactory(final EurekaHttpClientFactory delegateFactory) {
    final Map<RequestType, EurekaHttpClientRequestMetrics> metricsByRequestType = initializeMetrics();
    final ExceptionsMetric exceptionMetrics = new ExceptionsMetric(EurekaClientNames.METRIC_TRANSPORT_PREFIX + "exceptions");
    return new EurekaHttpClientFactory() {

        @Override
        public EurekaHttpClient newClient() {
            return new MetricsCollectingEurekaHttpClient(delegateFactory.newClient(), metricsByRequestType, exceptionMetrics, false);
        }

        @Override
        public void shutdown() {
            shutdownMetrics(metricsByRequestType);
            exceptionMetrics.shutdown();
        }
    };
}
Also used : EurekaHttpClientFactory(com.netflix.discovery.shared.transport.EurekaHttpClientFactory) ExceptionsMetric(com.netflix.discovery.util.ExceptionsMetric)

Example 2 with EurekaHttpClientFactory

use of com.netflix.discovery.shared.transport.EurekaHttpClientFactory in project eureka by Netflix.

the class DiscoveryClient method scheduleServerEndpointTask.

private void scheduleServerEndpointTask(EurekaTransport eurekaTransport, AbstractDiscoveryClientOptionalArgs args) {
    Collection<?> additionalFilters = args == null ? Collections.emptyList() : args.additionalFilters;
    EurekaJerseyClient providedJerseyClient = args == null ? null : args.eurekaJerseyClient;
    TransportClientFactories argsTransportClientFactories = null;
    if (args != null && args.getTransportClientFactories() != null) {
        argsTransportClientFactories = args.getTransportClientFactories();
    }
    // Ignore the raw types warnings since the client filter interface changed between jersey 1/2
    @SuppressWarnings("rawtypes") TransportClientFactories transportClientFactories = argsTransportClientFactories == null ? new Jersey1TransportClientFactories() : argsTransportClientFactories;
    Optional<SSLContext> sslContext = args == null ? Optional.empty() : args.getSSLContext();
    Optional<HostnameVerifier> hostnameVerifier = args == null ? Optional.empty() : args.getHostnameVerifier();
    // If the transport factory was not supplied with args, assume they are using jersey 1 for passivity
    eurekaTransport.transportClientFactory = providedJerseyClient == null ? transportClientFactories.newTransportClientFactory(clientConfig, additionalFilters, applicationInfoManager.getInfo(), sslContext, hostnameVerifier) : transportClientFactories.newTransportClientFactory(additionalFilters, providedJerseyClient);
    ApplicationsResolver.ApplicationsSource applicationsSource = new ApplicationsResolver.ApplicationsSource() {

        @Override
        public Applications getApplications(int stalenessThreshold, TimeUnit timeUnit) {
            long thresholdInMs = TimeUnit.MILLISECONDS.convert(stalenessThreshold, timeUnit);
            long delay = getLastSuccessfulRegistryFetchTimePeriod();
            if (delay > thresholdInMs) {
                logger.info("Local registry is too stale for local lookup. Threshold:{}, actual:{}", thresholdInMs, delay);
                return null;
            } else {
                return localRegionApps.get();
            }
        }
    };
    eurekaTransport.bootstrapResolver = EurekaHttpClients.newBootstrapResolver(clientConfig, transportConfig, eurekaTransport.transportClientFactory, applicationInfoManager.getInfo(), applicationsSource, endpointRandomizer);
    if (clientConfig.shouldRegisterWithEureka()) {
        EurekaHttpClientFactory newRegistrationClientFactory = null;
        EurekaHttpClient newRegistrationClient = null;
        try {
            newRegistrationClientFactory = EurekaHttpClients.registrationClientFactory(eurekaTransport.bootstrapResolver, eurekaTransport.transportClientFactory, transportConfig);
            newRegistrationClient = newRegistrationClientFactory.newClient();
        } catch (Exception e) {
            logger.warn("Transport initialization failure", e);
        }
        eurekaTransport.registrationClientFactory = newRegistrationClientFactory;
        eurekaTransport.registrationClient = newRegistrationClient;
    }
    // Configure new transport layer (candidate for injecting in the future)
    if (clientConfig.shouldFetchRegistry()) {
        EurekaHttpClientFactory newQueryClientFactory = null;
        EurekaHttpClient newQueryClient = null;
        try {
            newQueryClientFactory = EurekaHttpClients.queryClientFactory(eurekaTransport.bootstrapResolver, eurekaTransport.transportClientFactory, clientConfig, transportConfig, applicationInfoManager.getInfo(), applicationsSource, endpointRandomizer);
            newQueryClient = newQueryClientFactory.newClient();
        } catch (Exception e) {
            logger.warn("Transport initialization failure", e);
        }
        eurekaTransport.queryClientFactory = newQueryClientFactory;
        eurekaTransport.queryClient = newQueryClient;
    }
}
Also used : ApplicationsResolver(com.netflix.discovery.shared.resolver.aws.ApplicationsResolver) EurekaHttpClientFactory(com.netflix.discovery.shared.transport.EurekaHttpClientFactory) SSLContext(javax.net.ssl.SSLContext) EurekaJerseyClient(com.netflix.discovery.shared.transport.jersey.EurekaJerseyClient) HostnameVerifier(javax.net.ssl.HostnameVerifier) Jersey1TransportClientFactories(com.netflix.discovery.shared.transport.jersey.Jersey1TransportClientFactories) EurekaHttpClient(com.netflix.discovery.shared.transport.EurekaHttpClient) Jersey1TransportClientFactories(com.netflix.discovery.shared.transport.jersey.Jersey1TransportClientFactories) TransportClientFactories(com.netflix.discovery.shared.transport.jersey.TransportClientFactories) TimeUnit(java.util.concurrent.TimeUnit)

Aggregations

EurekaHttpClientFactory (com.netflix.discovery.shared.transport.EurekaHttpClientFactory)2 ApplicationsResolver (com.netflix.discovery.shared.resolver.aws.ApplicationsResolver)1 EurekaHttpClient (com.netflix.discovery.shared.transport.EurekaHttpClient)1 EurekaJerseyClient (com.netflix.discovery.shared.transport.jersey.EurekaJerseyClient)1 Jersey1TransportClientFactories (com.netflix.discovery.shared.transport.jersey.Jersey1TransportClientFactories)1 TransportClientFactories (com.netflix.discovery.shared.transport.jersey.TransportClientFactories)1 ExceptionsMetric (com.netflix.discovery.util.ExceptionsMetric)1 TimeUnit (java.util.concurrent.TimeUnit)1 HostnameVerifier (javax.net.ssl.HostnameVerifier)1 SSLContext (javax.net.ssl.SSLContext)1