搭建服务提供者
-
新建maven项目配置pom
引入eureka客户端
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
配置yml
spring: application: name: eureka-client server: port: 20001 eureka: client: service-url: defaultZone: http://localhost:20000/eureka/
配置启动类
@SpringBootApplication @EnableDiscoveryClient public class EurekaClientApplication { public static void main(String[] args) { new SpringApplicationBuilder(EurekaClientApplication.class) .web(WebApplicationType.SERVLET) .run(args); } }
编写一个测试接口服务
@Slf4j @RestController public class Controller { @Value("${server.port}") private String port; @GetMapping("/sayHi") public String sayHi(){ return "This is " + port; } }
搭建服务调用者
-
新建maven项目配置pom
引入eureka客户端
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
配置yml
spring: application: name: eureka-consumer server: port: 20002 eureka: client: service-url: defaultZone: http://localhost:20000/eureka/
配置启动类
@SpringBootApplication @EnableDiscoveryClient public class EurekaConsumerApplication { public static void main(String[] args) { new SpringApplicationBuilder(EurekaConsumerApplication.class) .web(WebApplicationType.SERVLET) .run(args); } }
编写一个调用测试接口服务
@RestController @Slf4j public class Controller { @Autowired private LoadBalancerClient client; @Autowired private RestTemplate restTemplate; @GetMapping("/hello") public String hello(){ // eureka-client是服务提供项目里面配置的application.name ServiceInstance instance = client.choose("eureka-client"); if (null == instance) { return "no available instance"; } String target = String.format("http://%s:%s/sayHi", instance.getHost(), instance.getPort()); log.info("url is {}",target); return restTemplate.getForObject(target, String.class); } }
测试通过访问localhost:20002/hello可以获取到服务提供项目中sayHi接口的返回结果
项目地址:https://github.com/wangJiaLun-china/spring-cloud-demo/tree/master/eureka