SpringCloud----Feign使用,erueka集群部署

三、服务发现-Feign

3.1 创建项目导入依赖

  • eureka-server

  • Ribbon

  • OpenFeign

3.2 配置application.yml

server:
  port: 9101
spring:
  application:
    name: order-ui
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka

3.3 启动类添加注解

@SpringBootApplication
@EnableDiscoveryClient   //服务消费者
@EnableFeignClients         //开始Feign客户端功能
public class OrderUiApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderUiApplication.class, args);
    }

}

3.4 使用Feign完成服务调用

  • 我们将服务的调用的“伪装”成方法调用

  • //声明此接口访问的服务名称 
    @FeignClient("order-provider")
    public interface OrderUIService {
    
        //OrderUIService实例就相当于对order-provider服务访问的客户端
        //如果访问的服务中有多个接口,在可以在当前OrderUIService定义多个方法
        //每个方法就相当于是对 服务提供者接口的访问
    
        //指定访问的服务中的接口(返回类型与请求的服务中的接口响应数据保持一致)
        @RequestMapping(value = "order/list",method = RequestMethod.GET)
        public List<Order> listOrders();
    
    }

在控制器中

@Resource
private OrderUIService orderUIService;

orderUIService.listOrders();

四、基于Feign的服务调用数据传递

  • Get通过URL传值,需要使用@RequetParam注解

  • post可以使用body传值

  • @FeignClient("order-provider")
    public interface OrderUIService {
    
        //1.如果在FeignClient客户端调用服务时,传递参数没有任何注解声明,则表示body传参
        //2.如果服务调用声明了Get方式,但是参数传递使用了body,则此请求会被转换成post请求
        //3.Get请求方式只能通过URL传参,参数需要@RequestParam注解声明,否则会被视为body传参
        @RequestMapping(value = "order/list",method = RequestMethod.GET)
        public List<Order> listOrders(@RequestParam("pageNum") Integer pageNum,
                                      @RequestParam("pageSize") Integer pageSize);
    
        //POST请求方式可以通过URL传参,也可以通过body传参
        @RequestMapping(value = "order/add",method = RequestMethod.POST)
        public ResultVO doAdd(Order order);
    
        //POST请求方式可以通过URL传参,也可以通过body传参
        @RequestMapping(value = "order/add",method = RequestMethod.POST)
        public ResultVO test(@RequestBody Order order, 
                             @RequestParam("pageNum") Integer num, 
                             @RequestParam("pageSize") Integer size);
    
    }

五、服务的集群部署

服务集群部署以保证服务可用

5.1 服务注册与发现中心的集群搭建(双节点)

  • 节点1配置

  • server:
      port: 8761
    spring:
      application:
        name: eureka-server
    eureka:
      instance:
        hostname: eureka-peer1
      client:
        register-with-eureka: false
        fetch-registry: false
        service-url:
          defaultZone: http://eureka-peer2:8762/eureka

节点2配置

server:
  port: 8762
spring:
  application:
    name: eureka-server
eureka:
  instance:
    hostname: eureka-peer2
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://eureka-peer1:8761/eureka

修改hosts文件

127.0.0.1    eureka-peer1
127.0.0.1    eureka-peer2
# 127.0.0.1    eureka-peer3

5.2 服务集群搭建

  • 配置服务允许“多开”

修改端口,启动服务

原文地址:https://www.cnblogs.com/jikeyi/p/13339575.html