public class RibbonClientUsingEureka { @SuppressWarnings("unchecked") public static void main(String[] args) { // http://localhost:6002/weather/now/gravatai System.out.println("apiCall.ribbon.MaxAutoRetriesNextServer: " + ConfigurationManager.getConfigInstance().getProperty("apiCall.ribbon.MaxAutoRetriesNextServer")); System.out.println("apiCall.ribbon.ConnectTimeout: " + ConfigurationManager.getConfigInstance().getProperty("apiCall.ribbon.ConnectTimeout")); System.out.println("apiCall.ribbon.ReadTimeout: " + ConfigurationManager.getConfigInstance().getProperty("apiCall.ribbon.ReadTimeout")); System.out.println("Using eureka: " + new DefaultEurekaClientConfigProvider().get().getEurekaServerServiceUrls("default")); LifecycleInjectorBuilder builder = LifecycleInjector.builder(); Injector injector = builder.build().createInjector(); EurekaClient client = injector.getInstance(EurekaClient.class); InstanceInfo info = client.getApplication("WEATHER-SERVICE").getInstances().get(0); String server = "http://" + info.getVIPAddress() + ":" + info.getPort(); System.out.println("Eureka Discovery client using: " + server); HttpResourceGroup httpRG = Ribbon.createHttpResourceGroup("apiCall", ClientOptions.create() .withMaxAutoRetriesNextServer(1) .withConfigurationBasedServerList(server) ); HttpRequestTemplate<ByteBuf> apiTemplate = httpRG.newTemplateBuilder("apiCall",ByteBuf.class) .withMethod("GET") .withUriTemplate("/weather/now/gravatai") .withFallbackProvider(new ApiFallbackHandler()) .withResponseValidator(new ApiResponseValidator()) .build(); RibbonResponse<ByteBuf> result = apiTemplate.requestBuilder() .build() .withMetadata().execute(); ByteBuf buf = result.content(); String json = buf.toString(Charset.forName("UTF-8" )); System.out.println("Result in Json: " + json); Gson gson = new Gson(); Map<String, String> mapResult = gson.fromJson(json, new TypeToken<Map<String, String>>() {}.getType()); System.out.println("Result weather: " + mapResult.get("weather")); System.exit(0); } }