Eureka 实现feign

Eureka 实现feign

Feign理解

Feign主要是微服务项目中远程调用的一种实现方式。根据服务名称和请求url调用其他服务方法的过程。其中重要的连接点为在Eureka注册中心注册客户端,其中包括消费者端和提供者端,消费者为进行调用的服务,提供者端顾名思义为具体接口的实现方。

搭建服务

1、首先搭建项目,因为涉及多服务,我建了多个模块来模拟。
使用idea,文件-》新建项目-》maven-》下一步-》取名称(springcloud)-》完成
在这里插入图片描述
2、建立eureka注册中心
右键项目-》新建模块-》选择spring Initializr-》下一步

在这里插入图片描述
这个时候可能会报错连接不到https://start.spring.io,解决办法:自行百度,我也是试了几个才成功,我用的办法是在setting中的http代理里进行检查连接之后成功的,但是不一定都是这样的情况。

接下来填写包名项目名称等,如图
在这里插入图片描述
然后下一步,选择依赖,我这里选择了两个 1、Web下的spring Web 2、Spring Cloud Discovery下的EurekaServer
在这里插入图片描述
然后下一步-》然后完成
到这里eureka注册中心模块构建完成,需增加其配置,在application.yml文件中配置以下内容

server:
  port: 8001 #指定运行端口
spring:
  application:
    name: eureka-server #指定服务名称
eureka:
  instance:
    hostname: localhost #指定主机地址
  client:
    fetch-registry: false #指定是否从注册中心获取服务(注册中心不需要开启)
    register-with-eureka: false #指定是否要注册到注册中心(注册中心不需要开启)
  server:
    enable-self-preservation: false #关闭保护模式

在启动类上增加注释 @EnableEurekaServer //启用Eureka注册中心功能,到这里就完成了此模块的构建

提供端搭建

提供端主要完成接口的实现,我为了方便只简单实现一个hello world
搭建模块与上面的类似,唯一区别为在添加默认依赖是选择不同,该模块选择两个 1、Web下的spring Web 2、Spring Cloud Discovery下的Eureka Discovery Client
在这里插入图片描述
搭建完成后修改启动类和配置文件
启动类增加注解@EnableFeignClients和@EnableDiscoveryClient //表明是一个Eureka客户端
配置文件application.yml

server:
  port: 8101 #运行端口号
spring:
  application:
    name: eurekaclient #服务名称
  #配置数据库的连接信息
  datasource:
      url: jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
      username: root
      password: XXXXXX
      driver-class-name: com.mysql.cj.jdbc.Driver
eureka:
  client:
    register-with-eureka: true #注册到Eureka的注册中心
    fetch-registry: true #获取注册实例列表
    service-url:
      defaultZone: http://localhost:8001/eureka/  #配置注册中心地址

搭建完成后创建controller类,编写接口

@Controller
public class HelloController {
    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello world!";
    }
}

消费端搭建

消费端实现调用提供端接口的功能,模块搭建与提供端一摸一样,不重复描述了,该模块中主要是创建一个接口类,通过这个接口类进行调用提供端的feign接口
创建一个feignService接口

@FeignClient("eurekaclient")
@ResponseBody
public interface FeignService {

    @RequestMapping("/hello")
    public String test();
}

注意需增加注解@FeignClient(“eurekaclient”),该注解表示调用的服务为eurekaclient,且该服务一定要在注册中心注册过。@RequestMapping(“/hello”)为调用路径,需与提供端保持一致。

到此代码编写完成,进行测试,两种测试方法,编写测试类
在这里插入图片描述
执行结果:
在这里插入图片描述
第二种编写controller类通过网页访问

@RestController
@RequestMapping
public class feigncontroller {

    @Autowired
    FeignService service;

    @RequestMapping("/test")
    public String test() {
        return service.test();
    }
}

打开网页输入localhost:8102/test 结果为
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值