使用idea从零编写SpringCloud项目-Feign
ps:Fegin和Ribbon 其实是差不多的东西,Fegin里面也是集成了Ribbon,不过咱们写代码不是要优雅嘛,使用Feign就会优雅很多了,看着比直接使用Ribbon舒坦一点
就不重新构建项目了,实在懒得动手可以从git上把我的代码拉去跑一跑,保证能运行。
1.首先在order_server里面引入对Fegin的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在启动类中增加注解@EnableFeginClients

3.可以开始编写咱们的Fegin代码了
package net.xdclass.order_server.service; import net.xdclass.order_server.fallback.ProductClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam; /**
* @date 2021/6/2 23:30
*/
//写上服务提供方的服务名称
@FeignClient(value = "product-service")
public interface ProductClient {
//请注意,参数与被调用方实际接口一致
@GetMapping("/api/v1/product/findById")
String findById(@RequestParam("id")int id); }
4.然后在需要调用接口的地方,注入这个Bean,ProductClient 再调用方法。
@Autowired
private ProductClient productClient;
5.然后调用方法获取返回值
6.设置负载均衡策略,在配置文件中增加以下配置,下面将默认的轮询机制变更为随机机制
product:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
7.fegin内置了hystrix,使用方式如下
feign:
hystrix:
#开启熔断器
enabled: true
client:
config:
default:
#连接超时时间
connectTimeout: 2000
#返回超时时间
readTimeout: 11000
8.加上fallback = ProductClientFallback.class
package net.xdclass.order_server.service; import net.xdclass.order_server.fallback.ProductClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam; /**
* @author chengcheng123
* @date 2021/6/2 23:30
*/
@FeignClient(value = "product-service",fallback = ProductClientFallback.class)
public interface ProductClient { @GetMapping("/api/v1/product/findById")
String findById(@RequestParam("id")int id); }
9.编写ProductClientFallback,继承使用fegin的productClient,然后将这个类用@component 标识为组件,交由IOC管理
/**
* @date 2021/6/3 23:33
*/
@Component
public class ProductClientFallback implements ProductClient {
@Override
public String findById(int id) {
System.out.println("feign 调用product-service findById 异常");
return null;
}
}
10.完事,自己验证一下
使用idea从零编写SpringCloud项目-Feign的更多相关文章
- 从零构建Java项目(Maven+SpringBoot+Git) #02 奥斯丁项目
前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁 名字倒没有什么特别的含义,我单纯觉得这个名字好 ...
- 从零搭建一个SpringCloud项目之Feign搭建
从零搭建一个SpringCloud项目之Feign搭建 工程简述 目的:实现trade服务通过feign调用user服务的功能.因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要 ...
- SpringCloud——Eureka Feign Ribbon Hystrix Zuul等关键组件的学习与记录
SpringCloud--Eureka Feign Ribbon Hystrix Zuul等关键组件的学习与记录 前言:本篇是对近日学习狂神SpringCloud教程之后的感想和总结,鉴于对Sprin ...
- CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL
CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使 ...
- SpringCloud 在Feign上使用Hystrix(断路由)
SpringCloud 在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...
- SpringCloud(5)---Feign服务调用
SpringCloud(5)---Feign服务调用 上一篇写了通过Ribbon进行服务调用,这篇其它都一样,唯一不一样的就是通过Feign进行服务调用. 注册中心和商品微服务不变,和上篇博客一样,具 ...
- idea创建springcloud项目图文教程(EurekaServer注册中心)
http://blog.csdn.net/hcmony/article/details/77854999 idea创建springcloud项目图文教程(EurekaServer注册中心)(六) 1, ...
- SpringCloud使用Feign出现java.lang.ClassNotFoundException: org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory异常
废话不多说!!! 在SpringCloud项目中配置了Feign来调用restful接口,项目启动的时候报错,报错信息如下: 找不到org.springframework.cloud.client.l ...
- springcloud 之 feign的重复性调用 优化
最近有一个springcloud的feign请求,用于获取坐标经纬度的信息,返回结果永远是固定不变的,所以考虑优化一下,不然每次转换几个坐标都要去请求feign,返回的所有坐标信息,数据量太大导致耗时 ...
- SpringCloud之Feign负载均衡(四)
整合Feign pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <arti ...
随机推荐
- 【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享|附代码数据
原文链接:http://tecdat.cn/?p=10278 最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出. 生存分析(也称为工程中的可靠性分析)的目标是在协变量和事件时间之间 ...
- C# 抽象类小谈
最近在做一个测试系统,就是读取功率计上的数据,在上位机软件上显示出来. 电脑界面不是我们这次的主讲就略过,我们这里主要讲一个类的实现. 最开始领导给了一个 远方的三相功率计 给我让我写上位机,很简单, ...
- C与C++字符串比较
#include<iostream> #include<string> using namespace std; int main() { char a[] = "a ...
- 不安全的权限 0644,建议使用 0600 虚拟机无法分配内存 virtual memory exhausted: Cannot allocate memory
我都不知道我写了啥,自己都很混乱 aoteman@aoteman-virtual-machine:/tmp$ sudo -s #进入root用户模式 [sudo] aoteman 的密码: 12对不起 ...
- docker删除image
删除<None><None>镜像 docker rmi $(docker images -f "dangling=true" -q) 如果删除时出现了ima ...
- Python学习笔记组织文件之用zipfile模块压缩文件
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- PyMySQL更新
title: PyMySQL更新 author: 杨晓东 permalink: PyMySQL更新 date: 2021-10-02 11:27:04 categories: - 投篮 tags: - ...
- zabbix(历史数据保留时长和趋势存储时间的区别)
zabbix(历史数据保留时长和趋势存储时间的区别)? zabbix(历史数据保留时长和趋势存储时间分别影响着哪里)? 001.影响grafana 数据展示的是历史数据还是趋势数据? 等把<历史 ...
- 三种方式实现RPC调用
一:RabbitMQ实现RPC调用 客户端: import pika import uuid class FibonacciRpcClient(object): def __init__(self): ...
- python sorted() 多重排序
前言: 最开始是因为看到一道题目, 用一行代码解决[1, 2, 3, 11, 2, 5, 3, 2, 5, 3] 输出[11, 1, 2, 3, 5] 本来想法很简单,先去重后排序 但是遇到一个难点 ...