Eureka 注册中心客户端开发

2019-10-14 0 By admin

客户端在向注册中心注册时,它会提供一些元数据。例如主机和端口、URL、主页等。
Eureka server 从每个client实例接收心跳消息。如果心跳超时,则通常将该实例从注册server中删除。

一、构建项目

使用IDEA 开发工具构架Eureka 提供者的工程,在选择依赖的界面勾选Cloud Discovert -> Eurka Server 和WEB。
工程构建中会自动编写好pom 文件中的依赖。

二、Eureka 提供者编写

2.1、代码编写

在Spring-boot 的启动类上通过注解@EnableEurekaClient,表明此对象是Eureka的客户端。

@RestController
@EnableEurekaClient
@SpringBootApplication
public class ProviderApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
    /**
     * 假如这个客户端要提供一个getUser的方法
     * @return
     */
    @GetMapping(value = "/getUser")
    @ResponseBody
    public Map<String,Object> getUser(@RequestParam Integer id){
        Map<String,Object> data = new HashMap<>();
        data.put("id",id);
        data.put("userName","admin");
        data.put("from","provider-A");
        return data;
    }
}

2.2、编写配置文件

eureka:
  client:
    serviceUrl: #注册中心的注册地址
      defaultZone: http://127.0.0.1:8081/eureka/
server:
  port: 8082  #服务端口号
spring:
  application:
    name: service-provider #服务名称--调用的时候根据名称来调用该服务的方法

三、Eureka 消费者编写

3.1、编写消费者的代码

@RestController
@EnableEurekaClient
@SpringBootApplication
public class ConsumerApplication {
    @Autowired
    RestTemplate restTemplate;
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
    /**
     * 实例化RestTemplate
     * @return
     */
    @LoadBalanced
    @Bean
    public RestTemplate rest() {
        return new RestTemplate();
    }
    /**
     * Rest服务端使用RestTemplate发起http请求,然后得到数据返回给前端
     * @param id
     * @return
     */
    @GetMapping(value = "/gotoUser")
    @ResponseBody
    public Map<String,Object> getUser(@RequestParam Integer id){
        Map<String,Object> data = new HashMap<>();
        /**
         * 消费者调用生产者使用的地址是:http://service-provider;而不是http://127.0.0.1:8082/
         * 因为他向注册中心注册了服务,服务名称service-provider,我们访问service-provider即可
         */
        data = restTemplate.getForObject("http://service-provider/getUser?id="+id,Map.class);
        return data;
    }
}

3.2、配置文件

eureka:
  client:
    serviceUrl: #注册中心的注册地址
      defaultZone: http://127.0.0.1:8081/eureka/
server:
  port: 8083  #服务端口号
spring:
  application:
    name: service-consumer #服务名称--调用的时候根据名称来调用该服务的方法