首页 > 其他分享 >服务消费者整合 OpenFeign ===> 启动类中要添加 @EnableFeignClients 注解

服务消费者整合 OpenFeign ===> 启动类中要添加 @EnableFeignClients 注解

时间:2023-12-11 12:46:24浏览次数:34  
标签:service OpenFeign EnableFeignClients nacos member Result 类中要 provider id

服务消费者整合 OpenFeign ===> 启动类中要添加 @EnableFeignClients 注解

package com.llq.springcloud;
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient  //  启用服务发现
@EnableFeignClients
public class MemberNacosConsumerApplication81 {
    public static void main(String[] args) {
        ApplicationContext ac = SpringApplication.run(MemberNacosConsumerApplication81.class, args);
    }
}

架构图:

springcloud
├─ MemberNacosConsumerApplication81.java
├─ config
│    ├─ CustomizationBean.java
│    └─ RibbonRule.java
├─ controller
│    └─ MemberNacosConsumerController.java
└─ service
       └─ MemberOpenFeignService.java	# member-service-nacos-consumer-81 消费者整合 openFeign	

member-service-nacos-consumer-81 消费者整合 openFeign

package com.llq.springcloud.service;

@FeignClient(value = "member-service-nacos-provider")   //  value:服务名称
public interface MemberOpenFeignService {
    /**
     * 解读
     * 1. 远程调用方式是 get
     * 2. 远程调用的 url 是 http://member-service-nacos-provider/member/get/{id}
     * 3. member-service-nacos-provider 是 nacos 注册中心服务名
     * 4. open-feign 会根据负载均衡算法来决定调用的是 10004 / 10006
     * 5. OpenFeign 通过接口方式调用服务
     */
    @GetMapping(value = "/member/get/{id}")
    public Result<Member> getMembfeById(@PathVariable("id") Long id);
}

服务 10004【服务名字 member-service-nacos-provider:服务名相同的构成集群】

# 注意格式:如果没有缩进的话,SpringBoot项目起不来!!!
server:
  port: 10004
spring:
  application:
    name: member-service-nacos-provider #名称,可以自己指定
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/e_commerce_center_db?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 352420kobe24llq
   # 配置 nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    # 配置 sentinel
#    sentinel:
#      transport:
#        dashboard: localhost:9999
#        port: 8888
  # 配置暴露所有监控点
#management:
#  endpoints:
#    web:
#      exposure:
#        include: '*'

mybatis:
  mapperLocations: classpath:mapper/*.xml #后面mapper 文件的位置
  type-aliases-package: com.llq.springcloud.entity # 实体类的包路径

调用的方法

@GetMapping("/member/get/{id}")
  public Result getMemberById(@PathVariable("id") Long id, HttpServletRequest request) {
      Member member = memberService.queryMemberById(id);
      // try {
      //     Thread.sleep(1000);
      // } catch (InterruptedException e) {
      //     e.printStackTrace();
      // }
      System.out.println("当前线程id 为:" + Thread.currentThread().getId());
      log.info("查询结果= " + member);
      if (member != null) {
          return Result.success("查询成功 member-service-nacos-provider-10004", member);
      } else {
          return Result.error("402", "ID= " + id + " 不存在");
      }
  }

服务 10006【服务名字 member-service-nacos-provider:服务名相同的构成集群】

# 注意格式:如果没有缩进的话,SpringBoot项目起不来!!!
server:
  port: 10006
spring:
  application:
    name: member-service-nacos-provider #名称,可以自己指定
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/e_commerce_center_db?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 352420kobe24llq
   # 配置 nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
 # 配置暴露所有监控点
#management:
#  endpoints:
#    web:
#      exposure:
#        include: '*'

mybatis:
  mapperLocations: classpath:mapper/*.xml #后面mapper 文件的位置
  type-aliases-package: com.llq.springcloud.entity # 实体类的包路径

调用方法

   @GetMapping(value = "/member/get/{id}")
  public Result getMemberById(@PathVariable("id") Long id) {
      Member member = memberService.queryMemberById(id);
      log.info("查询结果= " + member);
      if (member != null) {
          return Result.success("查询成功 member-service-nacos-provider-10006", member);
      } else {
          return Result.error("402", "ID= " + id + " 不存在");
      }
  }

标签:service,OpenFeign,EnableFeignClients,nacos,member,Result,类中要,provider,id
From: https://www.cnblogs.com/aclq/p/17894131.html

相关文章

  • OpenFeign
    1、简介Feign是一个声明式的Web服务客户端(Web服务客户端就是Http客户端),让编写Web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。cloud官网介绍Feign:https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/OpenFeign源码:https://github.......
  • OpenFeign远程调用
    Feign是什么SpringCloud组件中一个轻量级RESTful的HTTP服务客户端,它是在RestTemplate基础上做封装(Feign内置Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务)一种声明式、模板化的HTTP客户端。使用Feign,可以做到声明式调用。Feign是在RestTemplate和Ribbon......
  • 远程调用过程 nacos openfeign
    两个服务A,BA调用B的方法,现在B方式写好业务,然后定义方法名,A调用方法名 映入product类,调用方法getCategory//查询分类Categorycategory=productFeignClient.getCategory(skuInfo.getCategoryId());定义方法名(可以独立写一个模块专门定义方法,调用的地......
  • 【openfeign】OpenFeign的扩展、日志、超时时间、拦截器、客户端组件、压缩
    Feign的日志配置有时候我们遇到Bug,比如接口调用失败、参数没收到等问题,或者想看看调用性能,就需要配置Feign的日志了,以此让Feign把请求信息输出来。全局配置定义一个配置类,指定日志级别:packagecom.morris.user.config;importfeign.Logger;importorg.springframework.context.a......
  • OpenFeign 接口调用问题及解决方案
    问题描述如果在同一个工程中出现两个OpenFeign接口使用一样的服务名称会报以下错误:Description:Thebean'optimization-user.FeignClientSpecification',definedinnull,couldnotberegistered.Abeanwiththatnamehasalreadybeendefinedinnullandoverridin......
  • Spring Cloud OpenFeign系列:简介和使用
    目录一、简介二、使用1、创建父工程2、创建order-service模块3、创建order-client模块三、效果四、配置说明1、超时配置全局超时配置局部超时配置2、Gzip压缩设置3、所有配置五、负载均衡五、对比Feign一、简介官网:https://spring.io/projects/spring-cloud-openfeign文档:https......
  • SpringCloudAlibaba Seata在Openfeign跨节点环境出现全局事务Xid失效原因底层探究
    原创/朱季谦曾经在SpringCloudAlibaba的Seata分布式事务搭建过程中,跨节点通过openfeign调用不同服务时,发现全局事务XID在当前节点也就是TM处,是正常能通过RootContext.getXID()获取到分布式全局事务XID的,但在下游节点就出现获取为NULL的情况,导致全局事务失效,出现异常时无法正常回......
  • 声明式调用 —— SpringCloud OpenFeign
    Feign简介SpringCloudFeign是一个HTTP请求调用的轻量级框架,可以以Java接口注解的方式调用HTTP请求,而不用通过封装HTTP请求报文的方式直接调用Feign通过处理注解,将请求模板化,当实际调用的时候传入参数,根据参数再应用到请求上,进而转化成真正的请求第一个Feign程......
  • openfeign开启日志Logger.Level feignLoggerLevel()中Level爆红的解决
    问题原因:引错包了!!!应该引入如下这个包importfeign.Logger;......
  • OpenFeign
    OpenFeign底层实现上:获取到你正在运行的实例(instance(也即是注册在nacos等注册中心的applicationName))编辑请求(包括函数的url,参数,方法,返回值等)(通常是调用一些方法来构成这个请求)负载均衡:最烂的做法就是获取总共的该服务有多少instance然后在其中取个随机值即可发......