@PostConstruct public void createResolver() { if (config != null) { // always postConstruct resolve if config exist EurekaCommonConfig.ResolverType resolverType = config.getServerResolverType(); if (resolverType == null) { throw new IllegalArgumentException("Write cluster resolver type not defined"); } EurekaCommonConfig.ServerBootstrap[] bootstraps = EurekaCommonConfig.ServerBootstrap.from(config.getServerList()); switch (resolverType) { case dns: addressStream = fromDns(bootstraps); break; case fixed: addressStream = fromList(bootstraps); } } }
private ServerResolver createWriteServerResolver(Func1<ServerBootstrap, Integer> getPortFunc) { EurekaCommonConfig.ResolverType resolverType = config.getServerResolverType(); if (resolverType == null) { throw new IllegalArgumentException("Write cluster resolver type not defined"); } ServerResolver resolver; ServerBootstrap[] bootstraps = ServerBootstrap.from(config.getServerList()); if (resolverType == ResolverType.dns) { resolver = forDNS(bootstraps, getPortFunc); } else { resolver = forFixed(bootstraps, getPortFunc); } return resolver; }
private static Observable<ChangeNotification<Server>> addressStreamFromConfig(EurekaServerConfig config, final ServiceType serviceType) { Observable<ChangeNotification<Server>> addressStream;ResolverType resolverType = config.getServerResolverType(); if (resolverType == null) { throw new IllegalArgumentException("Write cluster resolver type not defined"); } addressStream = EurekaClusterResolvers.writeClusterResolverFromConfiguration( resolverType, Arrays.asList(config.getServerList()), Schedulers.computation() ).clusterTopologyChanges().map(new Func1<ChangeNotification<ClusterAddress>, ChangeNotification<Server>>() { @Override public ChangeNotification<Server> call(ChangeNotification<ClusterAddress> notification) { if (notification.getKind() == Kind.BufferSentinel) { return ChangeNotification.bufferSentinel(); } Server server = new Server( notification.getData().getHostName(), notification.getData().getPortFor(serviceType) ); return new ChangeNotification<Server>(notification.getKind(), server); } }); return addressStream; } }