技术标签: openfeign springcloud 服务架构
一般情况下,微服务内部调用都是通过注册中心,eureka,zookeeper,nacos等实现动态调用,但是对于一些外部http调用,对于不在同一微服务内,不在同一注册中心的服务调用,可以考虑SpringCloudOpenFeign,而且可以实现动态URL,通过参数动态控制。
服务端正常springboot项目,也不一定是springboot项目,只要正常提供RESTFul接口就可以,本次测试以springboot为例。主要是客户端调用。
1.服务端:
/**
* (Category)控制层
*
* @author makejava
* @since 2021-06-03 07:20:41
*/
@RestController
@RequestMapping("/category")
public class CategoryController {
/**
* 服务对象
*/
@Resource
private CategoryService categoryService;
/**
* 测试服务
*/
@GetMapping("/test")
public Response test() {
return Response.createSuccessResponse("查询成功", "我是测试服务");
}
}
2.客户端
maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
客户端代码
/**
* 测试
* @author zrj
* @since 2021-07-25
*/
@Api(value = "微盟鉴权测试")
@RestController
@RequestMapping("/weimob")
public class ActivityController {
@Resource
private CategoryService categoryService;
@GetMapping("/test")
@ApiOperation(value = "微盟获取Code")
public Response test() throws URISyntaxException {
System.out.println("-----测试-----");
URI uri = new URI("http://localhost:8080/category/test");
Response response = categoryService.test(uri);
return Response.createSuccessResponse("查询成功", response);
}
}
调用接口
/**
* 测试接口Openfeign
* @author zrj
* @since 2021/7/25
**/
@Service("WeimobAuthorize")
@FeignClient(url = "http://localhost:8080/category", name = "CategoryService")
public interface CategoryService {
@GetMapping
Response test(URI uri);
}
1.接口使用SpringMVC注解
接口方法的定义使用了SpringMVC的注解 @GetMapping、@RequestParam,其实SpringMVC的其他注解在此处都是支持的。(有其他文章提到也支持OpenFeign原有的注解@RequestLine、@Param等,但博主实测是不支持的,相关解析类为 feign.Contract,这个存疑)。
2.springcloud openfeign自动构建实现类
在使用方式上,OpenFeign需要手动构建代理对象,Spring Cloud OpenFeign 不同于 OpenFeign, Spring Cloud OpenFeign 帮我们自动生成了接口的代理对象(即实现类),并且注册到Spring中,我们可以很方便的使用 @Autowired 注入代理对象然后使用。其默认的代理对象是 LoadBalancerFeignClient。还有一个代理对象是 feign.Client.Default。两者区别在于:LoadBalancerFeignClient 通过服务名(下文提到)从Eureka查找相关的节点地址url,发起调用。feign.Client.Default 仅是简单的直接调用。
3.FeignClient属性name与URL一定要指定
@FeignClient(url = “http://localhost:8080/category”, name = “CategoryService”)
name 属性,是@FeignClient 注解必要的,不定义时会报错其默认指代Eureka上的服务名。
url 属性,一定要指定,这是重点了! url属性指定什么值其实不重要,因为最终都会被方法的URI参数值替换掉,它在这里另一个重要的作用,就是将接口的代理对象变成feign.Client.Default(上文提到默认是LoadBalancerFeignClient),这样就绕过了从Eureka取节点地址这一步,毕竟第三方的地址不可能注册到我们的Eureka上。(相关细节可自行debug FeignClientFactoryBean.getTarget())
文章浏览阅读567次,点赞6次,收藏11次。解决方案:CO模块使用前台事务码KP26维护活动类型价格,即可。业务操作:PP模块前台事务码CR02维护活动类型时,报错如上。报错原因:CO模块没有为活动类型进行价格维护。CO模块KP26维护作业类型价格完毕。2024年1月26日 写于上海。事务码KP26进入,_作业类型 lab 没有为成本中心 ql99 1001 设置
文章浏览阅读3.2k次,点赞4次,收藏10次。解决TortoiseGitPlink要求输入密码_tortoisegitplink
文章浏览阅读4.7k次,点赞2次,收藏5次。详细了解大端和小端的存储_大端存储和小端存储
文章浏览阅读6.3k次,点赞5次,收藏49次。一、从零开始建设企业信息安全系统:企业信息安全体系分为:信息安全技术体系和信息安全管理体系 信息安全技术体系: 两个层面: 1.需建设安全相关基础设施和系统,以具备解决相关安全问题的能力。 2.需具备安全运营能力,只有正确部署和使用设备,才能真正保障信息安全。 信息安全管理体系: 两个层面: 1.具备信息安全相关的制度、规范、流程及策略。 2.具..._信息安全运营服务实施指南研究
文章浏览阅读455次。import osimport shutil def select_file(dir, dir_out): # dir为查询文件路径,dir_out为拷贝路径 if os.path.isfile(dir): if(dir[-4:] == '.bmp' or '.jpg' or 'png'): #拷贝所有以上格式的文件,也可以修改为其他格式 filename = dir.split('\\')[-1] # 提取文件名称 s_python遍历所有文件复制指定文件?tn=02003390_71_hao_pg
文章浏览阅读5.1k次,点赞17次,收藏10次。https://pan.baidu.com/s/1IV_lBCeFFM712xx_iXnhqQ 提取码:0pr5_win11 cudatookit安装包 百度云
文章浏览阅读128次。转自前言 上一篇文章已经介绍了简单的CDQ分治,包括经典的二维偏序和三维偏序问题,还有带修改和查询的二维/三维偏序问题。本文讲介绍多重CDQ分治的嵌套,即多维偏序问题。四维偏序问题给定N(N<=20000)个有序四元组(a,b,c,d),求对于每一个四元组(a,b,c,d),有多少个四元组(a2,b2,c2,d2)满足a2<a &..._cdq处理四维偏序
文章浏览阅读571次,点赞8次,收藏10次。Culling Mask:bg(将背景图片的layer设置为bg,层级在最后面,比如这里设置为9,背景图片一般放在2DObject-sprite里)main Camera:用来照物体的,CameraUI:用来照背景的。_unity设置两个摄像机
文章浏览阅读3.7k次,点赞90次,收藏24次。VMware虚拟机安装Linux纯净版(含卸载,图文超详细)_虚拟机安装linuxqq和卸载的图片
文章浏览阅读1.1k次。AnyChat开发流程指南下面列出AnyChatPlatform Core SDK基本开发流程,适用于开发视频会议系统、语音视频聊天系统、远程教育平台以及即时通讯平台(IM)等。 一、初始化该部分是首先要完成的,用于设置SDK的一些行为,包括设置对应的回调函数、设置SDK组件路径、设置是否产生日志文件等,通常初始化AnyChat SDK的代码如下(C++): 01.// 打_axchat的使用过程
文章浏览阅读190次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。_在线作业管理系统测试用例
文章浏览阅读758次。好久没更新博客了。近期忙着一个项目, 还要应付各种考试就顾不上博客了。今天遇到了一个蛋疼的问题, 通过BLE4.0与蓝牙外设通信。按照客户给的协议文档发送的数据, 可是外设不能正确识别。折腾了一下午。最后问了客户才知道... 数据头fffe, 他们在外设里面已经做规定了。 所以不须要发送。真是蛋疼。也怪自..._unicode fffe