首页 > 其他分享 >SpringCloud Alibaba(一) - Nacos 服务注册与发现,OpenFeign远程调用

SpringCloud Alibaba(一) - Nacos 服务注册与发现,OpenFeign远程调用

时间:2022-12-01 20:00:49浏览次数:52  
标签:调用 http OpenFeign kgcmall96 SpringCloud Nacos 3.4 日志 class

1、基础项目过目介绍

1.1 数据库创建

1.2 项目模块分布

1.3 测试http接口调用

1.3.1 http接口调用配置类

//http接口调用配置类
@Configuration
public class RestTemplateConfig {

    @Bean
    //@LoadBalanced //支持注册中心使用服务名调用,并支持负载均衡 
    //第一次测试先不加  @LoadBalanced 注解  
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}

1.3.2 请求方法

@Slf4j
@RestController
public class KgcMallOrderController {

    @Autowired
    private RestTemplate restTemplate;
    /**
     * @author : zhukang
     * @param  : [java.lang.Integer, java.lang.Integer]
     * @return : com.kgc.scda.bean.KgcMallOrder
     * @description : 模拟用户下单
     */
    @GetMapping("/createOrder")
    public KgcMallOrder createOrder(@RequestParam Integer uid, @RequestParam Integer pid){
        log.info("------ 用户编号:{},商品编号:{},模拟下单", uid, pid);

        // 查询用户详情
        KgcMallUser mallUser = restTemplate.getForObject("http://localhost:9602/mallUser?uid=" + uid, KgcMallUser.class);

        // 查询商品详情
        KgcMallProduct mallProduct = restTemplate.getForObject("http://localhost:9603/mallProduct?pid=" + pid, KgcMallProduct.class);
       

        // 封装订单实体,入库
        KgcMallOrder mallOrder = KgcMallOrder.builder()
                .userId(mallUser.getId())
                .userName(mallUser.getUserName())
                .prodId(mallProduct.getId())
                .prodName(mallProduct.getProdName())
                .totalPrice(mallProduct.getProdPrice())
                .build();

        // 调用订单业务接口,插入订单
        kgcMallOrderService.saveMallOrder(mallOrder);
        log.info("------ 用户编号:{},商品编号:{},下单成功", uid, pid);

        // 返回订单详情
        return mallOrder;
    }
    
}

1.3.3 测试结果

2、Nacos 服务注册与发现

2.1 单机 启动Nacos

startup.cmd -m standalone

2.2 登录nacoe界面

用户名:nacos

密码:nacos

2.3 服务注册 nacos依赖

<!--   nacos 依赖  三个服务都添加   -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.4 服务注册 配置

application.yml

# 服务到nacos注册中心
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

2.5 注解 @EnableDiscoveryClient

@EnableDiscoveryClient

2.6 测试http接口调用

2.6.0 查询服务注册情况

2.6.1 请求方法

//将站点请求换成,服务名请求(突然记得,负载均衡就是基于服务名请求作为基础的)
KgcMallUser mallUser = restTemplate.getForObject("http://kgcmall96-user/mallUser?uid=" + uid, KgcMallUser.class);

KgcMallProduct mallProduct = restTemplate.getForObject("http://kgcmall96-prod/mallProduct?pid=" + pid, KgcMallProduct.class);

2.6.1 直接 测试结果

2.6.2 添加 @LoadBalanced 注解

2.6.3 再次测试

2.6.4 再次使用 http通过站点+端口 路径请求

请求失败,说明使用 @LoadBalanced 注解后,RestTemplate 不能再使用站点+端口的方式请求。

3、OpenFeign

3.1 依赖

<!--    openfeign 远程调用    -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

3.2 注解

//基本用法跟feign 差不多

//主启动类上的注解: 
@EnableFeignClients

//接口上的注解:  方法调用不再 赘述
@FeignClient(value = "kgcmall96-prod")
@FeignClient(value = "kgcmall96-user")

3.3 测试

测试方法不在赘述;

3.4 OpenFeign远程调用日志

3.4.1 全局日志

3.4.1.1 指定日志级别
# 指定日志级别,要配置在 远程调用的客户端,配合openFeign全局日志使用
logging:
  level:
    com.kgc.scda.service: debug
3.4.1.2 全局日志配置
/**
 * Created On : 24/11/2022.
 * <p>
 * Author : huayu
 * <p>
 * Description: OpenFeign 全局日志配置类
 */
@Configuration  //全局日志配置,如果使用@FeignClient(value = "kgcmall96-user",configuration = OpenFeignLogConfig.class)的局部日志,全局配置就不可以使用
public class OpenFeignLogConfig {

    /**
     * @author : huayu
     * @date   : 24/11/2022
     * @param  : []
     * @return : feign.Logger.Level
     * @description : openFeignLogLevel
     */
    @Bean
    public Logger.Level openFeignLogLevel(){
        //适用于开发测试中,记录接口远程调用的全部日志
        return Logger.Level.FULL;

    }


}
3.4.3.3 测试

3.4.2 局部日志 注解方式

3.4.2.1 使用局部日志后,全局日志需要关闭

3.4.2.2 局部配置注解 (比较麻烦不推荐)
@FeignClient(value = "kgcmall96-user",configuration = OpenFeignLogConfig.class)
3.4.2.3 测试

3.4.3 局部日志 配置文件方式

3.4.3.1 application.yml配置
# 局部日志配置方式2:在核心配置文件中,指定局部远程调用服务的日志级别,不需要全局配置类的支持,实现@FiegnClient 只用局部日志解耦
# 顶格写
feign:
  client:
    config:
      kgcmall96-prod:
        loggerLevel: FULL
#      kgcmall96-user:
#        loggerLevel: FULL
3.4.3.2测试

标签:调用,http,OpenFeign,kgcmall96,SpringCloud,Nacos,3.4,日志,class
From: https://www.cnblogs.com/hanease/p/16942527.html

相关文章

  • SpringCloud Alibaba(二) - Sentinel,整合OpenFeign,GateWay服务网关
    1、环境准备1.1Nacos单机启动:startup.cmd-mstandalone1.2Sentinel启动命令:java-Dserver.port=8858-Dcsp.sentinel.dashboard.server=localhost:8858-Dproject.n......
  • SpringCloud(一) - Dubbo + Zookeeper
    Dubbo和Zookeeper不是SpringCloud的东西,放在这里只是为了方便复习;1、下载安装Zookeeper和Dubbo1.1下载安装教程下载安装教程 windows环境下安装zookeeper教程详解(单......
  • SpringCloud(二) - Eureka注册中心,feign远程调用,hystrix降级和熔断
    1、项目模块介绍2、父项目主要依赖spring-cloud的版本控制<properties><!--springCloud版本--><scd.version>Dalston.SR4</scd.version></pro......
  • SpringCloud(四) - 微信获取用户信息
    1、项目介绍2、微信公众平台和微信开放文档2.1微信公众平台2.1.1网址链接https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index......
  • SpringCloud (五) - 云服务器Centos7.6,安装JDK,Maven,Mysql,Redis
    1、购买云服务器购买地址:https://cloud.tencent.com/act/pro/2022double11_warmup后面的环境都是基于此环境Centos7.6;2、安装SecureCRT和SecureFX2.1SecureCRT教......
  • 什么是Nacos?
    Nacos是DynamicNamingandConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助您发现、配置和管理微......
  • springcloud之系统架构演变
    1-单体应用架构优点:开发简单,适用于小型应用缺点:不易拓展,维护,代码耦合2-垂直应用架构优点:解决高并发问题,针对不同的模块优化,方便水平扩展,容错缺点:系统间相......
  • springcloud之springboot自动装载
        ImportSelector接口是Spring导入外部配置的核心接口,在SpringBoot的自动配置和@EnableXXX(功能性注解)中起到了决定性的作用.当在@Configuration标注的Class......
  • springcloud之ribbon请求重试
    1-服务消费者order_service中application.yml中开启日志server:port:9002spring:application:name:service-orderdatasource:driver-class-name:......
  • springcloud之微服务架构
    微服务& 微服务架构微服务不等于微服务架构微服务  :  强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题\提供落地对应服务的一个服务应用,狭义的......