• SpringBoot引入OpenFeign,不使用注册中心


    转自:https://blog.csdn.net/wind_chasing_boy/article/details/123822427(做了部分修改)

    【前言】
    最近接到一个需求,需要对接第三方平台的api,在设计方案通过之后,打算将对接服务拆分出来,因为现在的项目没有使用到注册中心,打算单独引入OpenFeign组件简化服务通信方式,也为了更好的支持项目后续向微服务的转变!

    很多人以为OpenFeign必须依赖于注册中心,其实不然,OpenFeign可以跳过注册中心,完成服务器间的通信(指定url,那么name/value就不会是注册中心里的服务名)
    项目目录结构


    feign-demo:root

    api:api层,供消费者使用

    consumer:服务消费者

    provider:服务生产者
    相关代码

    api
    创建TestApi接口,添加@FeignClient注解
    name:服务名称 (注:若使用注册中心,此处应该写生产者服务名称)
    url:生产者的url地址

    @FeignClient(name = "feignTest", url = "localhost:8081/feign")
    public interface TestApi {
        @GetMapping("test/{data}")
        String test1(@PathVariable("data") String data);

        @PostMapping("test/{data}")
        String test2(@PathVariable("data") String data);
    }

    consumer
    1、创建启动类并添加@EnableFeignClients注解

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

    2.创建ConsumerController

    @RestController
    @RequestMapping("/consumer")
    public class ConsumerController {
        @Autowired
        private TestApi testApi;

        @GetMapping("test/{data}")
        public String test1(@PathVariable("data") String data) {
            return testApi.test1(data);
        }

        @PostMapping("test/{data}")
        public String test2(@PathVariable("data") String data) {
            return testApi.test2(data);
        }
    }

    provider
    创建ProviderController

    @RestController
    @RequestMapping("/feign")
    public class ProviderController {
        @GetMapping("test/{data}")
        public String test1(@PathVariable("data") String data) {
            return "test-get";
        }

        @PostMapping("test/{data}")
        public String test2(@PathVariable("data") String data) {
            return "test-post";
        }
    }

    验证

    分别启动consumer(8080)、provider(8081)

    get

    post

    总结:在使用注册中心时,OpenFeign作为服务间通信的组件,它本身集成了Ribbon的负载均衡能力、错误重试、日志、Hystrix熔断等机制,同时也能够支持点对点的通信方式,让开发者感觉更像是调用本地接口,而不是发起HTTP请求。
    demo地址:https://github.com/RarelyConfused/feign-demo

  • 相关阅读:
    Python深入02 上下文管理器
    Python深入01 特殊方法与多范式
    Python进阶09 动态类型
    Python进阶08 异常处理
    Python进阶07 函数对象
    Python进阶06 循环对象
    Python进阶05 循环设计
    Python进阶04 函数的参数对应
    Python进阶03 模块
    Python进阶02 文本文件的输入输出
  • 原文地址:https://www.cnblogs.com/silentdoer/p/16803767.html
Copyright © 2020-2023  润新知