Я сейчас работаю на микросервисах.
У меня появляется эта ошибка, когда я пытаюсь вызвать github API:
java.lang.IllegalStateException: No instances available for api.github.com
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:119) ~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:99) ~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:58) ~[spring-cloud-commons-2.2.1.RELEASE.jar:2.2.1.RELEASE]
Я использую Discovery Server, и это код для вызова внешнего API
package com.github.ProjectAPI.resources;
import com.github.ProjectAPI.models.GithubProject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
@RestController
@RequestMapping("/project")
public class GithubSingleProjectResource {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/{projectId}")
public List<GithubProject> getMovieInfo(@PathVariable("projectId") String projectId)
{
GithubProject[] githubProjects = restTemplate.getForObject("https://api.github.com/users/Amilosz/repos", GithubProject[].class);
List<GithubProject> projectsList = Arrays.asList(githubProjects);
return projectsList;
}
}
Есть предложения? Когда я называю URL как localhost, все работает нормально.
Как я делаю бин:
@SpringBootApplication
@EnableEurekaClient
public class ProjectApiApplication {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ProjectApiApplication.class, args);
}