springcloud学习7——负载均衡2→feign

从b站学习springcloud,现在进行总结,该总结除去了视频中出现的小错误,对有些易错的地方进行了提醒
b站链接:https://www.bilibili.com/video/av55304977

资料链接:
https://pan.baidu.com/s/1o0Aju3IydKA15Vo1pP4z5w
提取码: 21ru

上一节链接:https://blog.csdn.net/qq_40893824/article/details/103332281
下一节链接:https://blog.csdn.net/qq_40893824/article/details/103439025

下面的内容总结:子工程→pom→application→接口及实现→handler→启动类

实现细节:
1.创建module模块,命名为feign
2.该模块的pom文件,添加代码:

	<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>
    </dependencies>

3.在resource下创application.yml,添加代码:

server:
  port: 8050
spring:
  application:
    name: feign
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true
    #确认注册

4.在java中创包com.southwind,在southwind中创启动类FeignApplication.java,填入代码:
引入@EnableFeignClients,才有feign功能

package com.southwind;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients//feign
public class FeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class,args);
    }
}

5.southwind下创包entity,把Student复制到里面

6.southwind下创包repository,创立接口:FeignProviderClient
@FeignClient(value = “provider”)表示要调用eurekaclient的功能(因为eurekaclient在注册中心的名字就叫provider,且GetMapping的名字写的是路径)

package com.southwind.repository;

import com.southwind.entity.Student;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Collection;

@FeignClient(value = "provider")
public interface FeignProviderClient {

    //声明接口
    @GetMapping("/student/findAll")
    public Collection<Student> findAll();

    @GetMapping("/studnet/index")
    public  String index();
}

7.在southwind中创包controller,新建FeignHandler.java
添加代码:

package com.southwind.controller;

import com.southwind.entity.Student;
import com.southwind.repository.FeignProviderClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collection;

@RestController
@RequestMapping("/feign")
public class FeignHandler {

    @Autowired
    private FeignProviderClient feignProviderClient;

    @GetMapping("/findAll")
    public Collection<Student> findAll(){
        return feignProviderClient.findAll();
    }

    @GetMapping("/index")
    public String index(){
        return feignProviderClient.index();
    }
}

8.检查是否调通:
a.进入http://localhost:8761
在这里插入图片描述
b.进入 http://localhost:8050/feign/index
在这里插入图片描述
刷新之,
在这里插入图片描述
说明可以负载均衡!

现在开始实现熔断机制(简单讲就是当某个微服务不能调用、出现问题时,给用户反馈的是“正在维护中”,而不是一大片用户看不懂的代码,其实我也看不懂~~~)
1.在application.yml中添加代码:

feign:
  hystrix:
    enabled: true

在这里插入图片描述
2.在repository创包impl,在里面新建FeignError.java
写入代码:
@Component不可忽略!

package com.southwind.repository.impl;

import com.southwind.entity.Student;
import com.southwind.repository.FeignProviderClient;
import org.springframework.stereotype.Component;

import java.util.Collection;

@Component
public class FeignError implements FeignProviderClient{
    @Override
    public Collection<Student> findAll() {
        return null;
    }

    @Override
    public String index() {
        return "正在维护中...";
    }
}

3.FeignProviderClient接口中修改@FeignClient(value = “provider”)
变成:@FeignClient(value = “provider”,fallback = FeignError.class)
4.现在把两个ProvideApplication关了,重启feign,再进入http://localhost:8050/feign/index
在这里插入图片描述
这样熔断机制就实现了。

上一节链接:https://blog.csdn.net/qq_40893824/article/details/103332281
下一节链接:https://blog.csdn.net/qq_40893824/article/details/103439025

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1403034144

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值