zoukankan      html  css  js  c++  java
  • OpenFeign使用步骤

    1. 新建 cloud-consumer-feign-order80

     2. pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>cloud2020</artifactId>
            <groupId>com.atguigu.springcloud</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>cloud-consumer-feign-order80</artifactId>
    
        <dependencies>
            <!--openfeign-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
            <!--eureka client-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <!--引入自定义的api通用包,可以使用Payment支付Entity-->
            <dependency>
                <groupId>com.atguigu.springcloud</groupId>
                <artifactId>cloud-api-commons</artifactId>
                <version>${project.version}</version>
            </dependency>
            <!--web-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--一般基础通用配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>

    3. application.yml

    server:
      port: 80
      
    eureka:
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka

    4. 主启动类

    package com.atguigu.springcloud;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    @SpringBootApplication
    @EnableFeignClients //开启Feign
    public class OrderFeignMain80 {
    
        public static void main(String[] args) {
            SpringApplication.run(OrderFeignMain80.class,args);
        }
    }
     

    5. 业务类

    //业务逻辑接口 + @FeignClient 配置调用provider服务
    package com.atguigu.springcloud.service;
    import com.atguigu.springcloud.entities.CommonResult;
    import com.atguigu.springcloud.entities.Payment;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    @Component
    @FeignClient(value = "CLOUD-PROVIDER-SERVICE")  //指定调用哪个微服务
    public interface PaymentFeignService {
    
        @GetMapping(value = "/payment/get/{id}")    //哪个地址
        CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);
    }
    
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
    
    package com.atguigu.springcloud.controller;
    import com.atguigu.springcloud.entities.CommonResult;
    import com.atguigu.springcloud.entities.Payment;
    import com.atguigu.springcloud.service.PaymentFeignService;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    import javax.annotation.Resource;
    @RestController
    @Slf4j
    public class OrderFeignController {
        @Resource
        private PaymentFeignService paymentFeignService;
    
        @GetMapping(value = "/consumer/payment/get/{id}")
        public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id){
            return paymentFeignService.getPaymentById(id);
        }
    }
     

    6. 测试

    先启动2个eureka集群 7001/7002
    在启动2个微服务 8001/8002
    启动OpenFeign 80

     多次刷新,8001和8002会依次出现,Feign自带负载均衡配置项

     总结:

     客户端服务接口根据 @FeigClient所显示的微服务名称去调用 服务暴露对外提供的方法。

  • 相关阅读:
    莫比乌斯反演套路一--令t=pd--BZOJ2820: YY的GCD
    BZOJ2720: [Violet 5]列队春游
    BZOJ2277: [Poi2011]Strongbox
    莫(meng)比(bi)乌斯反演--BZOJ2301: [HAOI2011]Problem b
    「CodePlus 2017 11 月赛」Yazid 的新生舞会
    「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!
    用NumGo实现安卓动画
    人生
    用NumGo实现安卓动画
    html5使用canvas绘制n角星
  • 原文地址:https://www.cnblogs.com/keiyoumi520/p/12930055.html
Copyright © 2011-2022 走看看