zoukankan      html  css  js  c++  java
  • 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 服务集群搭建

    • 配置服务允许“多开”

    修改端口,启动服务

  • 相关阅读:
    把文本文件数据快速导入Sql Server
    db4o, 看上去很美
    从《黑暗森林》事件谈下我对网络时代正版,盗版的看法
    viewDidUnload 和 dealloc 的区别(转)
    (翻译)cocoaasyncsocket 异步Socket
    iPhone的Socket编程使用开源代码之AsyncSocket(转)
    iphone之开源类库工具
    ObjectC 中各数据类型转换 NSData转NSString,Byte,UIImage
    iphone开发ObjectiveC新特性──类别与协议(转)
    让WebForm异步起来(转)
  • 原文地址:https://www.cnblogs.com/jikeyi/p/13339575.html
Copyright © 2011-2022 走看看