SpringCloud | 07.@LoadBalanced - 直接使用实例名发起访问

本文介绍了Spring Cloud Eureka中如何改进服务调用方式,避免了之前需要配置公网IP的繁琐步骤。通过在RestTemplate上添加@LoadBalanced注解,可以直接使用服务名进行调用,简化了消费者调用提供者的过程。同时强调了服务名中不能含有下划线,并提供了配置和服务调用的示例。
摘要由CSDN通过智能技术生成

参考文章

spring cloud eureka 消费者使用服务名访问,不能访问的问题

使用spring cloud测试负载均衡时报java.lang.IllegalStateException: Request URI does not contain a valid hostname

1.先前存在的不足

​ 先前我们希望访问一个已注册的服务时,我们首先要为 提供者 配置好公网IP,在启动后,调用者 获取实例的元数据,再从元数据中获取公网IP和端口号,随后才能发起请求进行调用。这样的话就存在诸多限制:

  • 必须要先确定 提供者 的公网IP,一旦换了一台机器,就要重新配置;
  • 调用者 要获取其元数据,操作繁琐。

2.改进:使用@LoadBalanced直接借助服务名发起访问

​ 可以直接使用服务名进行调用。核心要点如下:

  • [配置服务名] 被访问服务的配置文件中,需要添加 spring.application.name参数以配置服务名(不得有下划线"_");
  • [RestTamplate添加注解] 在使用@Bean将RestTamplate对象注入到Spring容器时,再添加@LoadBalanced注解。
  1. [配置服务名] 提供者 的配置文件中,添加spring.application.name参数对服务名进行配置。

    使用spring cloud测试负载均衡时报java.lang.IllegalStateException: Request URI does not contain a valid hostname

    image-20220615113359799

    特别注意:下划线"_“无法被识别,因此服务名中不得有”_"

  2. [RestTemplate添加注解] 找到 将RestTemplate对象注入Spring容器的代码,在其上再添加@LoadBalanced

    image-20220615112158066
  3. [借助服务名发起调用]调用者 的接口中,借助服务名发起远程调用;

    image-20220615113050047

  4. [启动服务测试结果] 在本地启动所有服务,通过http://localhost:8081/hello/sayByRestTemplate调用接口。

    image-20220615113232979

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值