SpringCloud OpenFeign超详细讲解模板化远程通信的实现

 更新时间:2022年07月12日 10:47:36   作者:有头发的程序猿!  
这篇文章主要介绍了SpringCloudSpringboot集成OpenFeign实现模板化远程通信,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1. openFeign实现

基于spring-boot-starter-parent 2.6.8,spring-cloud-dependencies 2021.0.3,一个order服务一个user服务

1.1 pom依赖

<!--nacos服务注册与发现-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<version>2021.0.1.0</version>
</dependency>
<!--远程服务调用-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
<!--服务调用feign-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

1.2 yaml配置

order调用端,配置的超时设置注释掉了只为记录

spring:
  application:
    name: orderservice
  cloud:
    #找对应网段的网卡 不配置内部服务就走外网
    inetutils:
      preferred-networks: 192.168.0
    nacos:
      discovery:
        server-addr: 192.168.0.221:8848
#feign:
#  client:
#    config:
#      #default设置的是全局超时时间,对所有的openFeign接口服务都生效 默认60s超时
#      default:
#        connectTimeout: 5000
#        readTimeout: 5000
#      #为某个服务设置超时时间 优先于全局
#      userservice:
#        connectTimeout: 5000
#        readTimeout: 5000

user服务仅需要注册

spring:
  application:
    name: userservice
  cloud:
    #找对应网段的网卡 不配置内部服务就走外网
    inetutils:
      preferred-networks: 192.168.0
    nacos:
      discovery:
        server-addr: 192.168.0.221:8848

远程调用依赖于注册中心,这里用的是nacos,其他的eureka也可以的

1.3 客户端调用代码

  • 启动类上添加@EnableFeignClients注解
  • api接口,可以单独放在api包
@FeignClient(value = "userservice")
//没有注册中心的服务调用使用  testFeign/随便写
//@FeignClient(value = "testFeign",url = "http://192.168.0.199:7540")
public interface UserService {
    //默认是@RequestBody注解参数 
    //如果使用其他注解一定要带上value 否者会报错 RequestParam.value() was empty on parameter 1
    @GetMapping("/getTime/{uuid}")
    String getTime(@PathVariable("uuid") String uuid, @RequestParam("name") String name);
    @PostMapping("/postTime")
    Map<String, Object> getTime(@RequestBody Map<String, Object> params);
}

客户端代码

	@Resource
    UserService userService;
    @GetMapping("/test")
    public String test() throws Exception {
        log.info("openFeign -- start");
        Map<String, Object> time = userService.getTime(resMap);
        log.info("openFeign -- {}", time);
        return template + ":" + time;
    }

1.4.服务端暴露接口

    @PostMapping("/postTime")
    public Map<String, Object> getTime(@RequestBody Map<String, Object> params) {
        params.put("time", new Date().getTime());
        return params;
    }

1.5.测试日志

c.e.order.controller.OrderController     : openFeign -- start
c.e.order.controller.OrderController     : openFeign -- {aaaa=bbbb, time=1657187048104}

到此这篇关于SpringCloud OpenFeign超详细讲解模板化远程通信的实现的文章就介绍到这了,更多相关SpringCloud OpenFeign模板化远程通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析Spring获取Bean的九种方法详解

    浅析Spring获取Bean的九种方法详解

    随着SpringBoot的普及,Spring的使用也越来越广,在某些场景下,我们无法通过注解或配置的形式直接获取到某个Bean。比如,在某一些工具类、设计模式实现中需要使用到Spring容器管理的Bean,此时就需要直接获取到对应的Bean,这篇文章主要介绍了Spring获取Bean的九种方法
    2023-01-01
  • springboot添加AOP日志配置详解

    springboot添加AOP日志配置详解

    这篇文章主要介绍了springboot添加AOP日志配置详解,日志是一种在软件开发中常用的技术,用于记录和跟踪应用程序的运行过程,通过AOP日志,开发人员可以实时监控应用程序的行为,包括方法的调用、参数的传递和返回值的获取等,需要的朋友可以参考下
    2023-10-10
  • Maven项目引用第三方jar包找不到类ClassNotFoundException

    Maven项目引用第三方jar包找不到类ClassNotFoundException

    这篇文章主要为大家介绍了Maven项目引用第三方jar包找不到类ClassNotFoundException解决及原因分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java基础之方法重写详解

    Java基础之方法重写详解

    这篇文章主要介绍了Java基础之方法重写详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • 完美解决Spring声明式事务不回滚的问题

    完美解决Spring声明式事务不回滚的问题

    下面小编就为大家带来一篇完美解决Spring声明式事务不回滚的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java高效实现excel转pdf(支持带图片的转换)

    Java高效实现excel转pdf(支持带图片的转换)

    这篇文章主要为大家详细介绍了如何用java实现excel转pdf文件,并且支持excel单元格中带有图片的转换,文中的示例代码讲解详细,需要的可以参考下
    2024-01-01
  • 详解Java并发包基石AQS

    详解Java并发包基石AQS

    Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如ReentrangLock、Semaphore,它们的实现都用到了一个共同的基类--AbstractQueuedSynchronizer,简称AQS。本文将从几个方面来详细介绍:基本实现原理、自定义同步器、源码分析
    2021-06-06
  • 深入学习springboot线程池的使用和扩展

    深入学习springboot线程池的使用和扩展

    这篇文章主要介绍了深入学习springboot线程池的使用和扩展,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,需要的朋友可以参考下
    2019-06-06
  • springboot中关于自动建表,无法更新字段的问题

    springboot中关于自动建表,无法更新字段的问题

    这篇文章主要介绍了springboot中关于自动建表,无法更新字段的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java线程状态及切换、关闭线程的正确姿势分享

    Java线程状态及切换、关闭线程的正确姿势分享

    这篇文章主要给大家介绍了关于Java线程状态及切换、关闭线程的正确姿势,文中通过示例代码介绍的非常详细,对大家的学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10

最新评论