Eureka元数据有两种,分别是标准元数据和自定元数据。

标准元数据:主机名、IP、端口号、状态也及健康检查等信息。这些信息会被发布在服务注册表中,用于服务之间的调用。

自定义元数据:用户自行定义的元素,远程客户端可访问并且可以根据这些元素进行一定的处理。


远程客户端获取元数据:movie服务获取user服务的元数据。

1、用户微服务修改:

server:  port: 8010spring:  application:    name: usereureka:  client:    service-url:      default-zone: http://localhost:8761/eureka/  instance:    prefer-ip-address: true    metadata-map:      # 自定义元数据,k和v都可以随意定义      my-metadata: user自定义元数据

2、电影服务修改:

package com.my.movie.controller;import com.my.movie.Util.ReturnUtil;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.discovery.DiscoveryClient;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author 垃圾美少女 */@RestController@Slf4jpublic class MovieController {    @Autowired    private DiscoveryClient discoveryClient;    @RequestMapping(value = "/movie/getUserMetadata", method = RequestMethod.GET)    public Map getUserMetadata(){        try {            List<ServiceInstance> user = discoveryClient.getInstances("user");            return ReturnUtil.succe***esult(user,"获取成功");        } catch (Exception e) {            log.error(e.getMessage(),e);            return ReturnUtil.errorResult(null,"获取失败");        }    }   }


discoveryClient.getInstances(serviceId);用来获取指定serviceId的服务的元数据。

3、访问 http://localhost:8020/movie/getUserMetadata