Spring boot/Cloud Eureka DiscoveryClient - 不知道这样的主机
Spring boot/Cloud Eureka DiscoveryClient - No such host is known
我想尝试使用 2.5.4 spring 启动的微服务并在发现中遇到问题
步骤:
使用@LoadBalanced 创建了一个 RestTemplate,并尝试使用“url 中的应用程序名称”调用该服务
我在属性中设置了 register 和 fetch registry true(认为这应该可以获得可用服务?)
Error: No such host is known
我正在尝试
@Autowired
private DiscoveryClient discoveryClient;
并做
discoveryClient.getInstances("myappservice-name").forEach((ServiceInstance s) -> {
System.out.println(ToStringBuilder.reflectionToString(s));
});
但是所有示例都说明要使用端点?或 commandLineRunner。两者我都在寻找自动加载
https://spring.io/guides/gs/service-registration-and-discovery/
不能为每个应用程序调用以下内容
@RequestMapping("/service-instances/{applicationName}") public
List<ServiceInstance> serviceInstancesByApplicationName(
如何自动注册?
编辑:更详细的问题
(1) 服务应用
bootstrap - spring.application.name=pluralsight-toll-service
申请道具
server.port=0
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.instance.instance-id=${spring.application.name}:${random.int}
eureka.instance.hostname=localhost
management.endpoints.web.exposure.include=*
应用程序
@SpringBootApplication
@EnableEurekaClient
public class PluralsightEurekaTollrateServiceApplication {
我看到应用在尤里卡服务器上注册了
(2) 客户端
bootstrap
spring.application.name=pluralsight-tollrate-billboard
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
application.props
server.port=8081
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
management.endpoints.web.exposure.include=*
应用程序
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PluralsightEurekaTollrateBillboardApplication {
控制器
@LoadBalanced
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
@Autowired
RestTemplate restTemplate;
@RequestMapping("/dashboard")
public String GetTollRate(@RequestParam int stationId, Model m) {
TollRate tr = restTemplate.getForObject("http://pluralsight-toll-service/tollrate/" + stationId, TollRate.class);
Error: pluralsight-toll-service host is unknown
如何使用名称从客户端调用服务
已解决问题
这完全取决于客户端项目依赖性
<!-- <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-eureka-client</artifactId>
<version>3.0.3</version>
</dependency> -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
名字太接近了
spring-cloud-netflix-eureka-client 错误
spring-cloud-starter-netflix-eureka-client 是正确的
因为写错了,只好加上com.netflix.eureka的eureka-client。全部清理干净,一切正常
(我还缺少 spring-cloud ,因为我是从 eclipse 创建的。将来只会使用 initializ )
我想尝试使用 2.5.4 spring 启动的微服务并在发现中遇到问题
步骤:
使用@LoadBalanced 创建了一个 RestTemplate,并尝试使用“url 中的应用程序名称”调用该服务
我在属性中设置了 register 和 fetch registry true(认为这应该可以获得可用服务?)
Error: No such host is known
我正在尝试
@Autowired
private DiscoveryClient discoveryClient;
并做
discoveryClient.getInstances("myappservice-name").forEach((ServiceInstance s) -> {
System.out.println(ToStringBuilder.reflectionToString(s));
});
但是所有示例都说明要使用端点?或 commandLineRunner。两者我都在寻找自动加载
https://spring.io/guides/gs/service-registration-and-discovery/
不能为每个应用程序调用以下内容
@RequestMapping("/service-instances/{applicationName}") public
List<ServiceInstance> serviceInstancesByApplicationName(
如何自动注册?
编辑:更详细的问题
(1) 服务应用
bootstrap - spring.application.name=pluralsight-toll-service
申请道具
server.port=0
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.instance.instance-id=${spring.application.name}:${random.int}
eureka.instance.hostname=localhost
management.endpoints.web.exposure.include=*
应用程序
@SpringBootApplication
@EnableEurekaClient
public class PluralsightEurekaTollrateServiceApplication {
我看到应用在尤里卡服务器上注册了
(2) 客户端 bootstrap
spring.application.name=pluralsight-tollrate-billboard
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
application.props
server.port=8081
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
management.endpoints.web.exposure.include=*
应用程序
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PluralsightEurekaTollrateBillboardApplication {
控制器
@LoadBalanced
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
@Autowired
RestTemplate restTemplate;
@RequestMapping("/dashboard")
public String GetTollRate(@RequestParam int stationId, Model m) {
TollRate tr = restTemplate.getForObject("http://pluralsight-toll-service/tollrate/" + stationId, TollRate.class);
Error: pluralsight-toll-service host is unknown
如何使用名称从客户端调用服务
已解决问题
这完全取决于客户端项目依赖性
<!-- <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-eureka-client</artifactId>
<version>3.0.3</version>
</dependency> -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
名字太接近了 spring-cloud-netflix-eureka-client 错误 spring-cloud-starter-netflix-eureka-client 是正确的
因为写错了,只好加上com.netflix.eureka的eureka-client。全部清理干净,一切正常 (我还缺少 spring-cloud ,因为我是从 eclipse 创建的。将来只会使用 initializ )