1、先创建3个项目,一个eureka注册中心,一个eureka-service,一个eureka-client
2、eureka注册中心,配置文件
spring.application.name=eureka-server
server.port=8761
# 注册中心不注册自己
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
server.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 {
@Autowired
private 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
@LoadBalanced
public 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 {
@Autowired
private 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
@LoadBalanced
public 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 为配置文件的服务名称。这样就能实现服务端和客户端的调用了。
由于不论是服务端还是客户端对于注册中心来说都是调用方,所以服务方也可调用客户端,客户端也可调用服务方。