Silentdoer

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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

作者:Silentdoer
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果随笔/文章及代码有表述不当之处,还请不吝赐教。

posted on   Silentdoer  阅读(2689)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示