文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringCloud远程服务怎么调用

2023-06-21 20:26

关注

这篇文章主要介绍SpringCloud远程服务怎么调用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

笔记

在微服务中,若想要使用远程调用,需要引入spring-cloud-starter-openfeign(在使用注册中心的环境下)

<dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-openfeign</artifactId>  <version>xxx</version></dependency>

由于open-feign是声明式的远程调用,所以需要编写一个接口,并且告诉SpringCloud这个接口需要调用远程服务。这个接口我放在公共模块下的feign中。

package top.ctong.gulimall.common.feign;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import top.ctong.gulimall.common.utils.R;import java.util.Map;@FeignClient("gulimall-coupon")@RequestMapping("/coupon/coupon")public interface CouponFeignService {        @RequestMapping("/list")    R list(@RequestParam Map<String, Object> params);}

@FeignClient("xxx") 该注解用于告诉SpringCloud这是一个远程调用接口,其中的value是你在注册中心中注册的服务名。

接口方法签名需要与被调用的远程服务签名一致,例如上面哪个代码要调用的远程服务:

package top.ctong.gulimall.coupon.controller;@RestController@RequestMapping("coupon/coupon")public class CouponController {    @Autowired    private CouponService couponService;        @RequestMapping("/list")    //@RequiresPermissions("coupon:coupon:list")    public R list(@RequestParam Map<String, Object> params){        PageUtils page = couponService.queryPage(params);        return R.ok().put("page", page);    }}

接着还要使用@EnableFeignClients开启当前需要使用远程调用的这个服务的远程调用,并且指定你的远程调用接口在哪个包下。

@EnableFeignClients(basePackages = "top.ctong.gulimall.common.feign")@EnableDiscoveryClient@MapperScan("top.ctong.gulimall.member.dao")@SpringBootApplicationpublic class GulimallMemberApplication {    public static void main(String[] args) {        SpringApplication.run(GulimallMemberApplication.class, args);    }}

@EnableFeignClients 该注解用于开启当前服务的远程调用功能

basePackages 用于指定远程调用接口所在的包,方便服务启动的时候可以快速扫描到。他可以接收多个包名,因为它是一个String[]

最后在需要远程调用时注入对应的远程调用接口就好

package top.ctong.gulimall.member.controller;@RestController@RequestMapping("member/member")public class MemberController {    private final CouponFeignService couponFeignService;    @Autowired    public MemberController(CouponFeignService couponFeignService, MemberService memberService) {        this.couponFeignService = couponFeignService;        this.memberService = memberService;    }      @RequestMapping("/testFeignInvoke")    public R testFeignInvoke() {        Map<String, Object> parem = new HashMap<>(10);        return couponFeignService.list(parem);    }}

错误(nacos)

如果在启动时出现 No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer? 错误,那么就是你的SpringCloud版本比较高,在高版本的SpringCloud中已经不再使用 spring-cloud-starter-netflix-ribbon 了,而是使用 spring-cloud-starter-loadbalancer 。而nacos还是使用的 spring-cloud-starter-netflix-ribbon

pom.xml文件中引入 spring-cloud-starter-loadbalancer 再启动就没毛病了。

<dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-loadbalancer</artifactId>  <version>3.0.4</version></dependency>

在测试远程调用中发生 AbstractMethodError 异常。需要在 pom.xml 中排除 nacos 中引入的 ribbon 。否则 spring-cloud-starter-loadbalancer 无法工作。

<dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  <exclusions>    <exclusion>      <groupId>com.netflix.ribbon</groupId>      <artifactId>ribbon</artifactId>    </exclusion>  </exclusions></dependency>

以上是“SpringCloud远程服务怎么调用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯