- 浏览: 189941 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. Feign声明式服务调用简介
2. Feign应用
2.1) 公共模块项目microservice-common的pom.xml增加feign依赖
2.2) 公共模块项目microservice-common中新建service,定义了FeignClient,同时指定了调用的服务名称MICROSERVICE-STUDEN
2.3) 重新打包microservice-common
2.4) 服务消费者项目microservice-student-consumer-feign-80搭建
2.5) 服务消费者项目microservice-student-consumer-feign-80的pom.xml增加Feign依赖
2.6) 服务消费者项目microservice-student-consumer-feign-80修改启动类为StudentConsumerFeignApplication_80.java同时增加注解@EnableFeignClients
2.7) 服务消费者项目microservice-student-consumer-feign-80修改StudentConsumerFeignController.java,把restTemplate去掉,改成注入service,调用service方法来实现服务的调用
Feign是一个声明式的Web Service客户端,它使得编写Web Serivce客户端变得更加简单。我们只需要使用Feign来创建一个接口并用注解来配置它既可完成。 它具备可插拔的注解支持,包括Feign注解和JAX-RS注解。Feign也支持可插拔的编码器和解码器。 Spring Cloud为Feign增加了对Spring MVC注解的支持,还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。 前面Ribbon调用服务提供者,通过restTemplate调用,缺点是,多个地方调用,同一个请求要写多次,不方便统一维护。 这时候使用Feign,就直接把请求统一搞一个service作为FeignClient,然后其他调用Controller需要用到的,直接注入service,直接调用service方法即可; 同时Feign整合了Ribbon和Eureka,所以要配置负载均衡的话,直接配置Ribbon即可,无其他特殊地方;当然Fiegn也整合了服务容错保护,断路器Hystrix。
2. Feign应用
2.1) 公共模块项目microservice-common的pom.xml增加feign依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>
2.2) 公共模块项目microservice-common中新建service,定义了FeignClient,同时指定了调用的服务名称MICROSERVICE-STUDEN
package com.andrew.service; import java.util.List; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import com.andrew.entity.Student; @FeignClient(value = "MICROSERVICE-STUDENT") public interface StudentClientService { @GetMapping(value = "/student/get/{id}") public Student get(@PathVariable("id") Integer id); @GetMapping(value = "/student/list") public List<Student> list(); @PostMapping(value = "/student/save") public boolean save(Student student); @GetMapping(value = "/student/delete/{id}") public boolean delete(@PathVariable("id") Integer id); }
2.3) 重新打包microservice-common
修改microservice-common 首先maven clean 然后maven install
2.4) 服务消费者项目microservice-student-consumer-feign-80搭建
new -> Maven Module -> create a simple project Module Name:microservice-student-consumer-feign-80 Parent Project:microservice Working set:SpringCloud -> Artifact Group Id:com.andrew.springcloud Artifact Id:microservice-student-consumer-feign-80 Version:0.0.1-SNAPSHOT Packaging:jar 代码与microservice-student-consumer-80相同
2.5) 服务消费者项目microservice-student-consumer-feign-80的pom.xml增加Feign依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>
2.6) 服务消费者项目microservice-student-consumer-feign-80修改启动类为StudentConsumerFeignApplication_80.java同时增加注解@EnableFeignClients
package com.andrew; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class }) @EnableEurekaClient @EnableFeignClients public class StudentConsumerFeignApplication_80 { public static void main(String[] args) { SpringApplication.run(StudentConsumerFeignApplication_80.class, args); } }
2.7) 服务消费者项目microservice-student-consumer-feign-80修改StudentConsumerFeignController.java,把restTemplate去掉,改成注入service,调用service方法来实现服务的调用
package com.andrew.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.andrew.entity.Student; import com.andrew.service.StudentClientService; @RestController @RequestMapping("/student") public class StudentConsumerFeignController { @Autowired private StudentClientService studentClientService; @PostMapping(value="/save") public boolean save(Student student){ return studentClientService.save(student); } @GetMapping(value="/list") public List<Student> list(){ return studentClientService.list(); } @GetMapping(value="/get/{id}") public Student get(@PathVariable("id") Integer id){ return studentClientService.get(id); } @GetMapping(value="/delete/{id}") public boolean delete(@PathVariable("id") Integer id){ return studentClientService.delete(id); } }
启动microservice-eureka-server-2001 启动microservice-eureka-server-2002 启动microservice-eureka-server-2003 启动microservice-student-provider-1001 启动microservice-student-provider-1002 启动microservice-student-provider-1003 先测试服务提供者: http://localhost:1001/student/list http://localhost:1002/student/list http://localhost:1003/student/list 再测试下 eureka: http://eureka2001.andrew.com:2001/ http://eureka2002.andrew.com:2002/ http://eureka2003.andrew.com:2003/ 然后再启动服务消费者 microservice-student-consumer-feign-80 http://localhost/student/list list----------------------------------1001 - 1003随机调用 [{"id":1,"name":"zhangsan","grade":"11"},{"id":2,"name":"lisi","grade":"12"},{"id":3,"name":"wangwu","grade":"13"},{"id":4,"name":"student04","grade":"14"},{"id":5,"name":null,"grade":null},{"id":6,"name":"student06","grade":"16"}]
发表评论
-
Config Server使用
2019-03-21 10:31 4831. SpringCloud Config简介 Spri ... -
Zuul API路由网关服务
2019-03-20 14:09 4931. Zuul API路由网关服务简介 这里的API路由 ... -
Feign与Hystrix服务熔断服务降级解耦
2019-03-20 13:56 6201. Feign与Hystrix服务熔断服务降级解耦 用 ... -
Hystrix的Dashboard仪表盘与turbine集群监控
2019-03-20 13:39 5341. Hystrix服务监控Dashboard仪表盘 H ... -
Hystrix断路器
2019-03-20 09:14 3501. Hystrix断路器简介 hystrix对应的中文 ... -
Ribbon负载均衡器
2019-03-19 15:19 3791. Ribbon简介 Ribbon是Netflix发布 ... -
Eureka服务注册与发现组件
2019-03-19 14:22 3891. 服务注册与发现组件Eureka简介 Eureka gi ... -
服务消费者microservice-student-consumer-80
2019-03-19 13:17 3591. 服务消费者项目microservice-student- ... -
服务提供者microservice-student-provider-1001
2019-03-19 11:59 3321. 服务提供者项目microservice-student- ... -
SpringCloud建立父项目、公共模块项目
2019-03-19 09:54 13141. SpringCloud简介 springcloud项目 ...
相关推荐
Feign 声明式服务调用详解 Feign 是一个声明式的 Web Service 客户端,它的目的就是让 Web Service 调用更加简单。Feign 提供了 HTTP 请求的模板,通过编写简单的接口和插入注解,就可以定义好 HTTP 请求的参数、...
通过集成Feign、Hystrix和Gateway等组件,实现了服务间的声明式调用、熔断降级、网关路由等功能,确保微服务架构的稳定性和高效性。 ## 项目的主要特性和功能 ### 1. Feign声明式服务调用 Feign概述Feign是一个...
Feign声明式调用源码解析 Feign是Spring Cloud中的一个轻量级的声明式RESTful客户端,主要用于简化微服务之间的调用过程。在本文中,我们将深入探讨Feign的源码,了解Feign如何实现声明式调用的。 一、Feign的工作...
Spring Cloud Feign 实现远程调用服务传输文件的方法 在微服务架构中,服务之间的调用和文件传输是非常常见的场景。Spring Cloud Feign 是一个基于 Java 的声明式 RESTful 客户端,提供了一种简单、可靠的方式来...
总结来说,Spring Cloud的这套组合拳——Eureka服务发现,Ribbon客户端负载均衡,以及Feign声明式服务调用,为构建高可用、松耦合的微服务系统提供了强大支持。通过实践这个案例,开发者可以深入理解这些组件的原理...
这样,Feign 客户端可以在调用服务时,自动选择最优的服务提供方,并在服务调用失败时,自动 fallback 到备用的服务提供方。 总结 Spring Cloud OpenFeign 是一个功能强大的声明式服务调用工具,集成了 Ribbon 和 ...
接下来,Feign 是一个声明式的 HTTP 客户端,它使得编写 Web 服务客户端变得简单。在 Spring Cloud 中,Spring Cloud OpenFeign 扩展了这一功能,允许开发者通过注解定义接口,自动构建和执行 HTTP 请求。在整合 ...
在本项目中,我们主要探讨的是如何利用Spring Cloud框架中的Feign组件进行声明式服务调用,这在微服务架构中是非常重要的一环。Feign是Spring Cloud提供的一种声明式Web服务客户端,它使得构建与使用Web服务客户端变...
SpringCloud核心组件Feign声明式服务调用 SpringCloud核心组件Hystrix断路器与容错机制 SpringCloud核心组件ZuulAPI网关 SpringCloud核心组件Config分布式配置中心 SpringCloud核心组件Bus消息总线 SpringCloud核心...
SpringCloud核心组件Feign声明式服务调用 SpringCloud核心组件Hystrix断路器与容错机制 SpringCloud核心组件ZuulAPI网关 SpringCloud核心组件Config分布式配置中心 SpringCloud核心组件Bus消息总线 SpringCloud...
Spring Cloud Feign是Spring Cloud生态系统中的一个组件,它作为一个声明式的服务调用客户端,使得编写Web服务客户端变得简单。Feign的设计灵感来源于Netflix的Feign库,它的主要目的是简化微服务之间的通信,使得...
技术选型包括Spring Eureka服务注册与发现、Spring Config配置中心、Spring MongoDB MongoDB支持、Spring Redis Redis支持、Spring Zuul网关、Spring Hystrix熔断器、Spring Feign声明式服务调用以及Spring Ribbon...
Feign是一个声明式Web服务客户端,它使得编写Web服务客户端变得简单,它的工作原理是通过创建一个接口并添加注解来定义服务接口,然后Feign会自动生成实现该接口的HTTP客户端。 在这个"SpringBoot使用Feign调用第三...
通过以上步骤,我们完成了服务调用者(user-service)对Feign的集成,实现了对服务提供者(message-service)的声明式调用。这种方式不仅使代码更简洁,而且由于Feign内部集成了Ribbon进行负载均衡,所以调用过程也...
Spring Cloud Feign 是一个基于 annotations 的声明式 RESTful 客户端,它提供了对服务间调用的一种简单而高效的解决方案。在本文中,我们将基于 Spring Cloud Feign来实现服务间的相互调用。 首先,让我们来创建一...
5. **Feign声明式服务调用** Feign是一个声明式的HTTP客户端,简化了服务间的调用。在"SpringCloud学习代码"中,你可以找到如何定义Feign接口,以及如何注入Eureka Client实现服务发现。 6. **Spring Cloud Config...
通过Ribbon,Feign会在调用服务时自动选择一个可用的实例。 4.2 Hystrix集成 Feign还集成了Hystrix,提供了熔断、降级和隔离策略,增强了服务调用的健壮性。当服务调用失败时,Hystrix可以避免服务雪崩,保证系统的...
7. **Feign声明式服务调用** Spring Cloud Feign是基于Netflix Feign实现的声明式Web服务客户端,它使得编写Web服务客户端变得更加简单。在本案例中,可能使用Feign来声明式地调用提供数据库服务的微服务。 8. **...
在Spring Cloud生态系统中,Feign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得简单。Feign的设计灵感来源于Netflix,旨在提供一个更高级别的、更面向接口的HTTP客户端抽象,使得开发者能够更加专注于...
5. **Feign声明式服务调用**:Feign是一个基于Java和JVM的声明式Web服务客户端,它使得编写Web服务客户端变得更简单,通过注解定义接口,Feign能自动生成实现代码,实现服务调用。 6. **Spring Cloud Config**:...