8、服务发现&服务消费者Feign

简介: Feign :spring cloud feign 是一个使用起来更加方便的 HTTP 客戶端。 在使用ribbon时,通常会使用RestTemplate实现对http请求的封装,形成了模板化的调用方法。

spring cloudNetflix中提供了两个组件实现软负载均衡调用,分别是RibbonFeign。上一篇和大家一起学习了Ribbon


Ribbon :Spring Cloud Ribbon是基于HTTPTCP的客户端负载工具,它是基于Netflix Ribbon实现的它可以在客户端配置 ribbonServerList(服务端列表),然后轮询请求以实现均衡负载


Feign :spring cloud feign 是一个使用起来更加方便的 HTTP 客戶端在使用ribbon时,通常会使用RestTemplate实现对http请求的封装,形成了模板化的调用方法。spring cloud feign在此基础上做了进一步的封装,Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,完全感知不到这是远程方法,更感知不到这是个HTTP请求。

 

1、 新建项目sc-eureka-client-consumer-feign,对应的pom.xml文件如下


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-cloud</groupId>
<artifactId>sc-eureka-client-consumer-feign</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sc-eureka-client-consumer-feign</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- 说明是一个 eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.4.5.RELEASE</version>
   </dependency> -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
</project>


备注:spring cloud 2.xspring-cloud-starter-feign已经被标识为过期,推荐使用spring-cloud-starter-openfeign


微信图片_20220501133050.png


2、 新建spring boot启动类ConsumerFeignApplication.java


package sc.consumer;
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 ConsumerFeignApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerFeignApplication.class, args);
}
}


3、 创建配置文件bootstrap.ymlapplication.yml,对应的内容如下


bootstrap.yml


server:
  port: 5800


application.yml


spring:
  application:
    name: sc-eureka-client-consumer-feign
eureka:
  client:
    registerWithEureka: true #是否将自己注册到Eureka服务中,默认为true
    fetchRegistry: true #是否从Eureka中获取注册信息,默认为true
    serviceUrl:
      defaultZone: http://localhost:5001/eureka/


4、 编写feign客户端


package sc.consumer.service;
import java.util.Map;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import sc.consumer.model.User;
@FeignClient(value="sc-eureka-client-provider")
public interface UserService {
@GetMapping("/user/getUser/{id}")
Map<String, Object> getUser(@PathVariable(value ="id") Long id);
@RequestMapping("/user/listUser")
Map<String, Object> listUser();
@PostMapping("/user/addUser")
Map<String, Object> addUser(@RequestBody User user);
@PutMapping("/user/updateUser")
Map<String, Object> updateUser(@RequestBody User user);
@DeleteMapping("/user/deleteUser/{id}")
Map<String, Object> deleteUser(@PathVariable(value ="id") Long id);
}


5、 分别启动注册中心项目sc-eureka-server和服务提供者sc-eureka-client-provider



6、 启动项目sc-eureka-client-consumer-feign,并验证是否启动成功


方法一


微信图片_20220501133334.png


方法二


微信图片_20220501133337.png


7、 使用postman验证


查询:


http://127.0.0.1:5800/feign/user/getUser/4


微信图片_20220501133639.png


列表:


http://127.0.0.1:5800/feign/user/listUser


微信图片_20220501133643.png


添加:


http://127.0.0.1:5800/feign/user/addUser


微信图片_20220501133646.png


更新:


http://127.0.0.1:5800/feign/user/updateUser


微信图片_20220501133649.png


删除:


http://127.0.0.1:5800/feign/user/deleteUser/6


微信图片_20220501133651.png


备注:


sc-eureka-client-provider项目的UserController.java 需要修正


微信图片_20220501133654.png


https://gitee.com/hjj520/spring-cloud-2.x/tree/master/sc-eureka-client-consumer-feign





相关文章
|
3月前
|
缓存 Java Maven
SpringCloud基于Eureka的服务治理架构搭建与测试:从服务提供者到消费者的完整流程
Spring Cloud微服务框架中的Eureka是一个用于服务发现和注册的基础组件,它基于RESTful风格,为微服务架构提供了关键的服务注册与发现功能。以下是对Eureka的详细解析和搭建举例。
|
6月前
|
负载均衡 Java 应用服务中间件
springcloud3-服务到服务调用ribbon及openfeign
springcloud3-服务到服务调用ribbon及openfeign
78 0
|
Java Linux 微服务
Feign的远程调用--微服务重试的坑
Feign的远程调用--微服务重试的坑
354 0
|
负载均衡 Java Maven
Eureka消费者使用rest方式调用 依赖ribbon负载均衡器
上两篇博客已经描述了搭建Eureka注册中心和把服务提供者注册到Eureka
|
负载均衡 Java Nacos
Springcloud服务调用Feign组件以及负载均衡
Springcloud服务调用Feign组件以及负载均衡
|
存储 JavaScript 小程序
SpringCloud 三种服务调用方式,你学会了吗?
SpringCloud 三种服务调用方式,你学会了吗?
|
负载均衡 网络协议 算法
Ribbon和Feign客户端负载均衡及服务调用
什么时负载均衡?(Loadbalancing)负载均衡,是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。过去所说的负载均衡常指服务端的负载均衡,在客户端和服务器端之间增加负载均衡器来实现。那么,客户端负载均衡是什么?
199 0
Ribbon和Feign客户端负载均衡及服务调用
|
缓存 负载均衡 架构师
微服务调用 Feign 与负载均衡|学习笔记(一)
快速学习微服务调用 Feign 与负载均衡
微服务调用 Feign 与负载均衡|学习笔记(一)
|
缓存 负载均衡 监控
微服务调用 Feign 与负载均衡|学习笔记(三)
快速学习微服务调用 Feign 与负载均衡
微服务调用 Feign 与负载均衡|学习笔记(三)
|
负载均衡 算法 Java
微服务调用 Feign 与负载均衡|学习笔记(二)
快速学习微服务调用 Feign 与负载均衡
微服务调用 Feign 与负载均衡|学习笔记(二)
下一篇
无影云桌面