irpas技术客

【SpringBoot深入浅出系列】SpringBoot集成Eureka及Feign_奔跑吧邓邓子_springboot 集成eureka

未知 3829

目录 前言一、Eureka 是什么?二、Feign 是什么?三、集成步骤1.创建 Eureka 服务注册中心(1).添加依赖(2).添加配置(3).启动类添加注解(4).启动服务 2.创建 SpringBoot 项目 provider(1).添加依赖(2).添加配置(3).启动类添加注解(4).新建订单实体类(5).新建订单服务接口类(6).新建订单服务实现类(7).新建订单控制类(8).启动服务 3.创建 SpringBoot 项目 consumer(1).添加依赖(2).添加配置(3).启动类添加注解(4).新建Feign接口(5).新建订单控制类(6).启动服务 四、测试总结


前言

本文通过 springboot 创建两个项目:provider、consumer,并注册至 Eureka 注册中心,通过Feign实现服务间调用。

一、Eureka 是什么?

Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。 Eureka 包含两个组件:Eureka Server 和 Eureka Client。 Eureka Server 提供服务注册服务,各个节点启动后,会在 Eureka Server 中进行注册,这样 EurekaServer 中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。 Eureka Client 是一个java客户端,用于简化与 Eureka Server 的交互,客户端同时也就是一个内置的、使用轮询(round-robin) 负载算法的负载均衡器。 不过 Eureka 的 GitHub Wiki 显示 2.0 版本的开源工作不再继续了:https://github.com/Netflix/eureka/wiki 大家可以考虑使用 Nacos 替代。见:SpringBoot 集成 Nacos 及 Feign,就是这么简单

二、Feign 是什么?

Feign 是一个声明式 Web 服务客户端。它使编写 Web 服务客户端变得更加容易。只需要创建一个接口并添加注解就可以进行微服务的调用。

三、集成步骤 1.创建 Eureka 服务注册中心

创建 SpringBoot 项目的方法见:[使用Idea创建 SpringBoot 项目]

(1).添加依赖

pom.xml 文件中添加以下依赖:

<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2021.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

注意:SpringBoot 和 SpringCloud 版本要对应,见:SpringBoot 、SpringCloud 版本选择

(2).添加配置

application.yml 文件中添加以下配置:

server: port: 8080 #服务注册中心端口 eureka: instance: hostname: 127.0.0.1 #服务注册中心IP地址 client: registerWithEureka: false #是否向服务注册中心注册自己 fetchRegistry: false #是否检索服务 serviceUrl: #服务注册中心链接,指定服务注册中心的位置 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ (3).启动类添加注解

启动类添加注解 @EnableEurekaServer

@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } (4).启动服务

运行服务后,浏览器输入:http://localhost:8080/

2.创建 SpringBoot 项目 provider

创建 SpringBoot 项目的方法见:使用Idea创建 SpringBoot 项目

(1).添加依赖

pom.xml 文件中添加以下依赖:

<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.1.3.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.69</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2021.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> (2).添加配置

application.yml 文件中添加以下配置:

server: port: 8081 #服务端口 eureka: client: serviceUrl: #注册中心注册地址 defaultZone: http://127.0.0.1:8080/eureka/ spring: application: name: service-provider #服务名称 (3).启动类添加注解

项目启动类添加注解:@EnableEurekaClient

@SpringBootApplication @EnableEurekaClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } } (4).新建订单实体类 @Data public class Order { private String orderId; // 订单 id private Long userId; // 用户 id private Date createDate; // 创建时间 private Date updateDate; // 修改时间 private String orderDetails; // 订单详情 } (5).新建订单服务接口类 package com.chaoyue.provider.service; import com.alibaba.fastjson.JSONObject; public interface OrderService { /** 获取订单信息 * * @return */ JSONObject getInfos(); } (6).新建订单服务实现类 package com.chaoyue.provider.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.chaoyue.provider.entity.Order; import com.chaoyue.provider.service.OrderService; import org.springframework.stereotype.Service; import java.util.Date; @Service public class OrderSeviceImpl implements OrderService { /** 获取订单信息 * * @return */ @Override public JSONObject getInfos() { Order order = new Order(); order.setOrderId("1"); order.setUserId(1L); order.setCreateDate(new Date()); order.setUpdateDate(new Date()); order.setOrderDetails("订单详情"); return JSONObject.parseObject(JSON.toJSONString(order)); } } (7).新建订单控制类 package com.chaoyue.provider.controller; import com.alibaba.fastjson.JSONObject; import com.chaoyue.provider.service.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/order") public class OrderController { @Autowired private OrderService orderService; /** 获取订单信息 * * @return */ @RequestMapping("/getInfos") public JSONObject getInfos() { return orderService.getInfos(); } } (8).启动服务

启动服务,可在 Eureka 注册中心看到已注册的服务

3.创建 SpringBoot 项目 consumer

创建SpringBoot 项目的方法见:使用Idea创建 SpringBoot 项目

(1).添加依赖

pom.xml 文件中添加以下依赖:

org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.cloud spring-cloud-starter-openfeign 2.1.3.RELEASE com.alibaba fastjson 1.2.69 org.projectlombok lombok 1.18.22 org.springframework.cloud spring-cloud-dependencies 2021.0.0 pom import (2).添加配置

application.yml 文件中添加以下配置:

server: port: 8082 #服务端口 eureka: client: serviceUrl: #注册中心注册地址 defaultZone: http://127.0.0.1:8080/eureka/ spring: application: name: service-consumer #服务名称 (3).启动类添加注解

项目启动类添加注解:@EnableEurekaClient、@EnableFeignClients

package com.chaoyue.comsumer; 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(basePackages = "com.chaoyue.comsumer.feignClient") public class ComsumerApplication { public static void main(String[] args) { SpringApplication.run(ComsumerApplication.class, args); } } (4).新建Feign接口

新建 OrderFeignClient 接口方法类,用来调用 provider 中的接口

package com.chaoyue.comsumer.feignClient; import com.alibaba.fastjson.JSONObject; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @FeignClient(name = "service-provider") public interface OrderFeignClient { /** 获取订单信息 * * @return */ @RequestMapping(value = "/api/order/getInfos", method = RequestMethod.GET) JSONObject getInfos(); } (5).新建订单控制类 package com.chaoyue.comsumer.controller; import com.alibaba.fastjson.JSONObject; import com.chaoyue.comsumer.feignClient.OrderFeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping("/api/order") public class OrderController { @Resource private OrderFeignClient orderFeignClient; @RequestMapping("/getInfos") public JSONObject getInfos() { return orderFeignClient.getInfos(); } } (6).启动服务

启动服务,可在 Eureka 注册中心看到已注册的服务

四、测试

浏览器输入链接:http://localhost:8082/api/order/getInfos


总结

以上就是今天要讲的内容,如果大家要了解更多的相关内容,请关注本博客的后续博文。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #springboot #集成eureka #集成 #Eureka # #Feign前言一Eureka #是什么二Feign