Search code examples
spring-bootspring-cloudspring-cloud-sleuth

Spring cloud sleuth dependencies throwing RibbonLoadBalancerClientException in Spring boot stack application


We are planning to integrate spring sleuth in our Spring cloud microservices application. However when a Service A makes a call to Service B using RestTemplate we are getting RibbonLoadBalancerClient exception. Please find the stack trace below.

ResponseObject genericResponse = restTemplate.exchange(expandedUrl, HttpMethod.GET, new HttpEntity<>(null), ResponseObject.class).getBody();
Logger.log(DEBUG, "getDetails returned {} ", response);
return genericResponse.getData().getInformation();

The version are are using is as below

  • Spring Boot : springBootVersion = '1.5.3.RELEASE'
  • Spring Sleuth : spring-cloud-starter-sleuth:1.2.4.RELEASE
  • Spring cloud dependencies : spring-cloud-services dependencies:1.2.0.RELEASE, spring-cloud-dependencies:Brixton.RELEASE

Exception - stacktrace : org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(Ljava/lang/String;Lorg/springframework/cloud/client/ServiceInstance;Lorg/springframework/cloud/client/loadbalancer/LoadBalancerRequest;)Ljava/lang/Object;| at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:978)| at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)| at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)|


Solution

  • You should be using the release train to manage versions. Also Brixton is a very old release train. Please upgrade and don't set library versions manually.