19.Feign 的工程化实例:eureka,ribbon,feign,hystrix(springcloud)
创始人
2024-01-20 22:48:59

项目模型

 

项目结构

本实例创建model都是通过maven手动创建,依赖进行手动导入,好处是比使用springboot模板创建更加灵活,更方便的进行父子模块的管理。

1.创建父项目feign-project

 2.对父项目feign-project的pom.xml,进行手动导入依赖


4.0.0domain-projectcommon-apiuser-centerorder-centerorg.springframework.bootspring-boot-starter-parent2.3.12.RELEASE pomcom.itfegin-project0.0.1-SNAPSHOT1.8Hoxton.SR12org.projectlomboklomboktrueorg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimport

3.domain-project子模块的创建

3.1使用maven进行创建,选择父项目为feign-project

2.pom.xml文件


fegin-projectcom.it0.0.1-SNAPSHOT4.0.0com.itdomain-project

3.3创建实体类Order

package com.it.domain;import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Order {private Integer orderId;private String name;private Double price;}

4.common-api子模块的创建

4.1.使用maven进行创建,选择父项目为feign-project

4.2.pom.xml文件


fegin-projectcom.it0.0.1-SNAPSHOT4.0.0com.itcommon-apicom.itdomain-project0.0.1-SNAPSHOTorg.springframework.cloudspring-cloud-starter-openfeignorg.springframework.cloudspring-cloud-starter-netflix-hystrix

4.3UserOrderFeign接口,做远程调用的接口

package com.it.feign;import com.it.domain.Order;
import com.it.feign.hystrix.UserOrderFeignHystrix;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;@FeignClient(value = "order-service",fallback = UserOrderFeignHystrix.class)
public interface UserOrderFeign {//查询订单@GetMapping("/order/getOrderByUserById")Order getOrderByUserById(@RequestParam Integer userId);}

4.4UserOrderFeignHystrix实现类,做熔断器调用的方法

package com.it.feign.hystrix;import com.it.domain.Order;
import com.it.feign.UserOrderFeign;
import org.springframework.stereotype.Component;@Component
public class UserOrderFeignHystrix implements UserOrderFeign {/*** 一般远程调用的熔断可以直接返回一个null值* @param userId* @return*/@Overridepublic Order getOrderByUserById(Integer userId) {return null;}
}

5.order-center子模块的创建

5.1使用maven进行创建,选择父项目为feign-project

 5.2pom.xml文件


fegin-projectcom.it0.0.1-SNAPSHOT4.0.0com.itorder-centercom.itcommon-api0.0.1-SNAPSHOTorg.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.bootspring-boot-maven-plugin

5.3application.yml文件

server:port: 8080
spring:application:name: order-service
eureka:client:service-url:defaultZone: http://192.168.174.133:8761/eurekainstance:hostname: localhostinstance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}

5.4OrderController类,实现另一个子模块common-api的UserOrderFeign接口,重写接口中的方法

package com.it.controller;import com.it.domain.Order;
import com.it.feign.UserOrderFeign;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OrderController implements UserOrderFeign {@Overridepublic Order getOrderByUserById(Integer userId) {System.out.println(userId);Order order = Order.builder().name("汉堡").price(8D).orderId(01).build();return order;}}

5.5主函数类

package com.it;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient
public class OrderServiceApp {public static void main(String[] args) {SpringApplication.run(OrderServiceApp.class,args);}
}

6.创建子模块user-center

6.1使用maven进行创建,选择父项目为feign-project

6.2pom.xml文件


fegin-projectcom.it0.0.1-SNAPSHOT4.0.0com.ituser-centercom.itcommon-api0.0.1-SNAPSHOTorg.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-starter-netflix-eureka-client

6.3application.yml文件

server:port: 8081
spring:application:name: user-service
eureka:client:service-url:defaultZone: http://192.168.174.133:8761/eurekainstance:hostname: localhostinstance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
feign:hystrix:enabled: true #开启熔断

6.4UserController类,调用另一个子模块common-api的UserOrderFeign接口中的方法,进行远程调用

package com.it.controller;import com.it.domain.Order;
import com.it.feign.UserOrderFeign;
import com.netflix.discovery.converters.Auto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
public class UserController {@Resourcepublic UserOrderFeign userOrderFeign;@GetMapping("find")public Order findOrder(){Order orderByUserById = userOrderFeign.getOrderByUserById(01);return orderByUserById;}}

6.5主函数类

package com.it;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class UserServiceApp {public static void main(String[] args) {SpringApplication.run(UserServiceApp.class,args);}
}

7.功能测试

7.1oreder-center(8080),user-cneter(8081)都正常开启服务

 7.2当oreder-center(8080)服务宕机,进行开启熔断器,返回一个null值

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
进口奶粉的排名 荷兰奶粉十大排... 越来越乱的国内奶粉市场让很多宝妈宝爸都不知道该如何选择奶粉品牌,宝宝的安全是第一位,奶粉的质量以及口...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
不用扬鞭自奋蹄 乘势而上千帆竞... 思明区正全力向“两个进位”目标发起冲刺,努力为建设高素质高颜值现代化国际化的厦门作出“思明贡献”。(...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...