1、先创建3个项目,一个eureka注册中心,一个eureka-service,一个eureka-client
2、eureka注册中心,配置文件
spring.application.name=eureka-serverserver.port=8761# 注册中心不注册自己eureka.client.register-with-eureka=falseeureka.client.fetch-registry=falseserver.context-path=/
3、在启动类上加上@EnableEurekaServer,@SpringBootApplication注解,启动eureka注册中心,成功后访问:http://localhost:8761/,若能访问则表示没有问题
4、创建 eureka-service , 配置文件如下
# 定义eureka服务名称spring.application.name=eureka-client-user-service# 定义端口server.port=8084# 定义服务路径eureka.client.serviceUrl.defaultZone=http://100.119.192.254:8761/eureka/# 采用IP注册eureka.instance.preferIpAddress=true# 定义实例id格式eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
在项目中创建一个controller如下
@RestController
public class Controer {@Autowiredprivate RestTemplate restTemplate;// 由eureka-client 调用@RequestMapping("/queryUserName")public String queryUserName() throws Exception{return “你好,世界”;} // eureka-service 调用 erueka-client 方法@GetMapping("/getPass")public String getPass(){return restTemplate.getForObject("http://eureka-client-article-service/article/getPass", String.class);}
}
在erueka-service启动类上加上@SpringBootApplication,@EnableDiscoveryClient和@EnableEurekaClient随便写一个,例如:
@SpringBootApplication
@EnableDiscoveryClient
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}@Bean@LoadBalancedpublic RestTemplate initRestTemplate(){return new RestTemplate();}
}
启动erueka-service,成功后访问http://localhost:8084/queryUserName,应为配置的是8084端口,所以访问8084,若成功将显示“你好,世界”。
5、创建 eureka-client , 配置文件如下
# 配置调用服务端
spring.application.name=eureka-client-article-service
server.port=8083
# 定义服务路径
eureka.client.serviceUrl.defaultZone=http://100.119.192.254:8761/eureka/
在项目中创建一个controller如下
@RestController
public class UserController {@Autowiredprivate RestTemplate restTemplate;// 调用服务端的方法@GetMapping("/article/getUserName")public String getUserName(){ String result = restTemplate.getForObject("http://eureka-client-user-service/queryUserName", String.class);return result;}// 提供方法给服务端调用@GetMapping("/article/getPass")public String getPass(){return "123456";}
}
在erueka-client启动类上加上@SpringBootApplication,@EnableDiscoveryClient和@EnableEurekaClient随便写一个,例如:
@SpringBootApplication
@EnableDiscoveryClient
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}@Bean@LoadBalancedpublic RestTemplate initRestTemplate(){return new RestTemplate();}
}
启动erueka-client,之后访问http://localhost:8083/article/getPass,界面显示123456为成功。
6、RestTemplate 访问方式
需要先实例化RestTemplate ,所以在eureka-service,eureka-client 启动的时候就加载了,其中@LoadBalanced注解自动将调用接口的地址替换成真正的服务地址,比如访问接口地址:
http://127.0.0.1:8084/queryUserName,使用注解后可写成:http://eureka-client-user-service/queryUserName,其中eureka-client-user-service 为配置文件的服务名称。这样就能实现服务端和客户端的调用了。
由于不论是服务端还是客户端对于注册中心来说都是调用方,所以服务方也可调用客户端,客户端也可调用服务方。