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

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

时间:2022-11-25 17:34:56浏览次数:42  
标签:调用 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/xiaoqigui/p/16925421.html

相关文章

  • SpringCloud网关设计
    1网关概念Gateway是在spring生态系统之上构建的API网关服务,网关是外网进入内网的入口,对内网服务起保护作用。2网关作用(1)反向代理:为保护内网服务的安全,通常不会暴露内......
  • 【Java】java | springcloud-alibaba版本说明 | springboot对应版本
     ......
  • 【Java】 java | nacos | nacos使用注意事项
    一、说明        1、本文档总结nacos使用心得及日常遇到的问题        2、不涉及技术配置二、关于本地调试1、场景1:本地调试多个模块1)建议使用本地nacos2)......
  • 微服务之注册中心nacos
    Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。下载nacos压缩包,详情请见于nacos官方网站  https://nacos.io/zh......
  • SpringCloud-OpenFeign-使用细节
    1.openfeign调用HttpServletRequest作为参数报错..(主要针对请求头信息透传)https://blog.csdn.net/qq_44783283/article/details/1135309102.OpenFeign传输文件(针对文件......
  • 微服务+eureka+ribbon+nacos
     跨服务远程调用:配置Restemplate eureka注册中心:第一步引入依赖,第二步启动类加注解@EnableEurekaServer,第三步配置yml文件配置客户端添加依赖client客户端配置......
  • springcloud网关整理
    脑图地址(脑图来自尚硅谷周阳老师)链接:https://pan.baidu.com/s/1UHyKoVPPdmL8y0PcOfgLjg 提取码:a51i 关于网关:netflix公司的zuul(停止更新进入维护,第二代没有出来)    ......
  • 启用nacos的客户端报错
    场景:个人自研项目需要用到云服务器,奈何预算有限,云服务器的镜像过多,内存不够了。dockerstatsnacos看了下,就你占据内存最大,用本地启用吧。结果,下载本地的nacos报错,经过排查,......
  • SpringCloud入门
    一、SpringCloud简介与版本选择1、简介SpringCloud是一系列框架的集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心......
  • springcloud -nacos-配置中心-接入
    1.nacaosClient接入:pom.xml引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-actuator</artifactId>......