本人正在找深圳Java实习工作,求大佬带飞 QQ:1172796094
如在文档中遇到什么问题请联系作者
——————————————————————————————————————

<>消费者从Eureka获取服务

接下来我们修改consumer-demo,尝试从EurekaServer获取服务。

方法与消费者类似,只需要在项目中添加EurekaClient依赖,就可以通过服务名称来获取信息了!

1)添加依赖:

先添加SpringCloud依赖:
<!-- SpringCloud的依赖 --> <dependencyManagement> <dependencies> <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RC1</version> <type>pom</type> <scope>import</scope>
</dependency> </dependencies> </dependencyManagement> <!-- Spring的仓库地址 -->
<repositories> <repository> <id>spring-milestones</id> <name>Spring
Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots>
<enabled>false</enabled> </snapshots> </repository> </repositories>
然后是Eureka客户端:
<!-- Eureka客户端 --> <dependency> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2)在启动类开启Eureka客户端
@SpringBootApplication @EnableDiscoveryClient // 开启Eureka客户端 public class
UserConsumerDemoApplication { @Bean public RestTemplate restTemplate() { return
new RestTemplate(); } public static void main(String[] args) {
SpringApplication.run(UserConsumerDemoApplication.class, args); } }
3)修改配置:
server: port: 8080 spring: application: name: user-consumer # 应用名称 eureka:
client: service-url: # EurekaServer地址 defaultZone:
http://127.0.0.1:10086/eureka instance: prefer-ip-address: true #
当其它服务获取地址时提供ip而不是hostname ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
4)修改user-consumer-demo项目中的UserDao代码,用DiscoveryClient类的方法,根据服务名称,获取服务实例:

// 必须导入org.springframework.cloud.client.discovery.DiscoveryClient @Autowired
private DiscoveryClient discoveryClient; public User queryUserById(Long id){
//1、 根据user-service获取user-serivce 的集群的信息 List<ServiceInstance> instances =
discoveryClient.getInstances("user-service"); //2、由于我们没有集群,只有一个,所以直接取出第一个
ServiceInstance instance = instances.get(0); //3、拼接URL String url =
"http://"+instance.getHost()+":"+instance.getPort()+"/user/"+id; //
使用restTemplate发起请求 ResponseEntity<User> entity = restTemplate.getForEntity(url,
User.class); // 获取返回对象 User user = entity.getBody(); return user; }
5)Debug跟踪运行:

生成的URL:

访问结果:

ok!

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信