上一章写了ribbon如何实现负载均衡,
这次搭建feign的负载均衡(feign整合了ribbon和hystrix熔断器(下一章添加))
一、创建feign-client服务
二、修改配置文件
spring.application.name=feign-client
# 应用服务 WEB 访问端口
server.port=8600
#服务中心地址
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
三、在启动类上添加两个注解
@EnableEurekaClient
@EnableFeignClients
package com.example.feignclient;
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 FeignClientApplication {
public static void main(String[] args) {
SpringApplication.run(FeignClientApplication.class, args);
}
}
四、创建一个service接口调用eureka-client的服务
package com.example.feignclient.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(value = "eureka-client")
public interface EurekaClientService {
@GetMapping("/index")
String indexMessage();
}
五、创建一个外部调用的controller
package com.example.feignclient.controller;
import com.example.feignclient.service.EurekaClientService;
import com.netflix.discovery.converters.Auto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EurekaClientController {
@Autowired
private EurekaClientService eurekaClientService;
@GetMapping("/index")
public String index(){
return eurekaClientService.indexMessage();
}
}
六、刷新eureka服务监控中心测试
七、 访问feign-client服务
后语:
ribbon和feign的主要区别:
ribbon:使用RestTemplate模拟http请求发送给其他服务(面向服务)
feign:定义接口和抽象方法进行调用(面向接口)
源码地址: https://github.com/houfanGitHub/springcloud.git