1. Home
  2. ALL

SpringCloud Alibaba微服务商城项目(九):SpringCloud Alibaba Nacos服务注册中心和Openfeign远程调用测试

目录

  1. SpringCloud Alibaba Nacos服务注册中心
    1.1 项目引入依赖
    1.2 安装nacos server并且启动
    1.3 在项目中配置nacos端口以及启动类
    1.4 查看我们启动的服务是否注册成功
  2. Openfeign远程调用测试例子
    2.1 feign调用的模块配置
    2.2 被调用的coupon模块,测试方法书写
    2.3 调用方的接口方法书写
    2.4 测试远程调用

1. SpringCloud Alibaba Nacos服务注册中心

nacos的使用过程中需要我们安装nacos注册中心的软件,然后我们的项目模块需要配置nacos的依赖,同时项目独立的yml需要配置我们nacos软件注册中心对外开放的接口
官方文档地址
https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md

1.1 项目引入依赖

我们在common模块里面引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

1.2 安装nacos server并且启动

下载地址

https://github.com/alibaba/nacos/releases

我们下载1.4.1稳定版本

file

启动nacos

file

启动中的问题解析:

Nacos 1.4.1 启动报错[db-load-error]load jdbc.properties error 以及 db.num is null,Unable to start embedded Tomcat

1.3 在项目中配置nacos端口以及启动类

**nacos注册中心的端口号是8848,我们的配置如下

file

**配置启动类 只需要下面标红的注解即可

file

**然后启动我们的wkkmall-coupon项目

1.4 查看我们启动的服务是否注册成功

我们访问127.0.0.1:8848/nacos,登录用户名密码是nacos nacos

file

可以看到我们的wkkmall-coupon注册成功了

file

然后我们吧member模块也注册上去:

file


2. Openfeign远程调用测试例子

openfeign远程调用的例子我们用member模块与coupon模块做一次模拟,member模块远程调用coupon模块的方法
想要远程调用别的服务要满足下面几个点
a.pom里面要引入openfeign
b.编写一个接口然后告诉SpringCloud这个接口需要调用远程服务

2.1 feign调用的模块配置

首先我们明确,想要调用别的模块的模块必须在pom里面引入下面的依赖配置

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

2.2 被调用的coupon模块,测试方法书写

file

代码如下所示:

@RequestMapping("/memeber/couponlist")
    public R memberCoupons(){

        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("满100减10");
//        这里我们用的是map的put方法,map是key value形式的数据集合
        return R.ok().put("coupon",Arrays.asList(couponEntity));
    }

2.3 调用方的配置和接口方法书写

想要远程调用别的服务要满足下面几个点
a.pom里面要引入openfeign
b.编写一个接口然后告诉SpringCloud这个接口需要调用远程服务

**先在我们的member模块下面创建feign包

file

**然后在feign包下面创建我们的接口类CouponFeignService,下面直接上代码

file

package com.wkkmicro.wkkmall.member.feign;

import com.wkkmicro.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 声明我们的调用的feign客户端是哪一个模块 这个名字就是我们注册中心中注册的服务名字
 */
@FeignClient("wkkmall-coupon")
public interface CouponFeignService {

    /**
     * 这里直接抄我们调用的coupon服务的方法名字即可,但是路由注解务必是全路径
     * @return
     */
    @RequestMapping("/coupon/coupon/memeber/couponlist")
    public R memberCoupons();
}

**接着就是在我们的调用方member开启我们的feignclient功能

file

以上图片里面显示的basepackage是必要的一步,这是告诉SpringCloud我们的哪个包开启openfeign功能,然后让框架扫描这个包下面的所有feign接口,接口已经规定了访问那个服务和服务里面所对应的方法,这是整个运作流程

**然后我们在MemberController下面写测试方法

 /**
     * 自动引入我们的feign远程调用接口类
     */
    @Autowired
    CouponFeignService couponFeignService;

    @RequestMapping("/coupons")
    public R test()
    {
        //调用远程方法
        R memberCoupons = couponFeignService.memberCoupons();
        //返回结果
        return R.ok().put("coupons",memberCoupons.get("coupons"));
    }

2.4 测试远程调用

**测试结果如下所示,调用成功

file

以上只是初步的认识,openfeign远程调用的具体实施步骤

原创文章,作者:admin,如若转载,请注明出处:https://www.cxylaowang.com/401.html

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Us

在线咨询:点击这里给我发消息

邮件:814489173@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code