【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)

简介: 【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)

在最近做的项目中,由于之前做的各个服务都是相互独立的,但是业务要求调用其他已做好的服务的功能,于是就有了正在做的项目调用已经上线的服务的需求。

一、背景描述

新开发的大脑管理平台(微服务A),由于需要调用控制引擎中心(微服务B)的接口,也就是服务A写个接口调用服务B,不需要做任务业务逻辑,即透传给服务B,服务B的接口为机器人测试对话聊天功能。由于这两个是独立的服务,相互之前没有关联性,所以会牵出一个问题?这服务A怎么调用服务B。

微服务A、微服务B,两个服务的项目结构如下:

二、配置方法


2.1 添加maven依赖

对于spring boot 2.0.0版本以上的,引用openfeign

1. <!--引入feign-->
2. <dependency>
3.  <groupId>org.springframework.cloud</groupId>
4.  <artifactId>spring-cloud-starter-openfeign</artifactId>
5.  <version>2.0.2.RELEASE</version>
6. </dependency>

在infrasture 目录中的 pom.xml 文件中添加 对微服务B的引用

1. <!-- 控制引擎服务 -->
2. <dependency>
3. <groupId>com.iot</groupId>
4. <artifactId>back-control-engine-api</artifactId>
5. <version>1.0-SNAPSHOT</version>
6. </dependency>

2.2 启动类上添加@EnableFeignClients注解

在服务A的启动类上添加@EnableFeignClients注解,使得该服务支持FeignClients功能。

@Slf4j
@SpringBootApplication(scanBasePackages = {"com.iot"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.iot")
@MapperScan("com.iot.back.brain.platform.tunnel.database")
public class MainServer implements ApplicationRunner {
    public static void main(String[] args) {
        try {
            SpringApplication.run(MainServer.class, args);
        } catch (Exception e) {
            log.error("大脑管理平台项目启动失败!报错原因 ============== ", e);
        }
    }
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("恭喜你,大脑管理平台成功启动啦...");
    }
}

2.3 配置文件application-local.yml中添加路径

配置文件中添加如下配置,然后在类中通过 @FeignClient 注解获取

以下是 application-local.yml 配置文件中的配置内容(application-dev.yml、application-chk.yml、application-prod.yml 文件中也需要配置上):

##################### 其他微服务 #####################
feign:
    services:
        controlEngine: back-control-engine #控制引擎服务

2.4 微服务A中添加微服务B的接口

建一个包用于存放 feign 接口,放哪个目录下,没有强制规定

2.5 调用此接口

把这个接口当成本项目中的一个接口类正常注入调用即可。如图所示:

拓展:另外一种调用方式也可供参考

【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法

完结!


相关文章
|
10月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
1034 117
|
10月前
|
监控 Kubernetes Java
使用 New Relic APM 和 Kubernetes Metrics 监控 EKS 上的 Java 微服务
在阿里云AKS上运行Java微服务常遇性能瓶颈与OOMKilled等问题。本文教你通过New Relic实现集群与JVM双层监控,集成Helm部署、JVM代理注入、GC调优及告警仪表盘,打通从节点资源到应用内存的全链路观测,提升排障效率,保障服务稳定。
674 115
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1594 0
|
IDE Java API
Java 17 新特性与微服务开发的实操指南
本内容涵盖Java 11至Java 17最新特性实战,包括var关键字、字符串增强、模块化系统、Stream API、异步编程、密封类等,并提供图书管理系统实战项目,帮助开发者掌握现代Java开发技巧与工具。
735 0
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
1276 0
|
NoSQL Java 微服务
2025 年最新 Java 面试从基础到微服务实战指南全解析
《Java面试实战指南:高并发与微服务架构解析》 本文针对Java开发者提供2025版面试技术要点,涵盖高并发电商系统设计、微服务架构实现及性能优化方案。核心内容包括:1)基于Spring Cloud和云原生技术的系统架构设计;2)JWT认证、Seata分布式事务等核心模块代码实现;3)数据库查询优化与高并发处理方案,响应时间从500ms优化至80ms;4)微服务调用可靠性保障方案。文章通过实战案例展现Java最新技术栈(Java 17/Spring Boot 3.2)的应用.
1049 9
|
Cloud Native Java Devops
Java 学习路线之环境搭建微服务项目实战及 DevOps 流程实操内容解析
这是一份结合最新技术的Java学习路线,涵盖环境搭建、微服务项目实战及DevOps流程。内容包括2025年版开发环境配置(如SDKMAN管理JDK、)、Gradle构建工具使用、微服务图书管理系统实战(Spring Boot 3.3 + Spring Cloud 2025.0)、云原生部署)、AI融合实践(OpenAI集成)以及性能优化与监控(JFR/Micrometer/Sleuth)。通过每日实践、代码审查和技术分享,帮助你掌握现代企业级开发技能,实现云原生应用的独立开发与部署。资源地址:[点击下载](https://pan.quark.cn/s/14fcf913bae6)。
749 0
|
人工智能 Java API
MCP客户端调用看这一篇就够了(Java版)
本文详细介绍了MCP(Model Context Protocol)客户端的开发方法,包括在没有MCP时的痛点、MCP的作用以及如何通过Spring-AI框架和原生SDK调用MCP服务。文章首先分析了MCP协议的必要性,接着分别讲解了Spring-AI框架和自研SDK的使用方式,涵盖配置LLM接口、工具注入、动态封装工具等步骤,并提供了代码示例。此外,还记录了开发过程中遇到的问题及解决办法,如版本冲突、服务连接超时等。最后,文章探讨了框架与原生SDK的选择,认为框架适合快速构建应用,而原生SDK更适合平台级开发,强调了两者结合使用的价值。
14544 33
MCP客户端调用看这一篇就够了(Java版)
|
存储 网络协议 Java
Java获取客户端IP问题:返回127.0.0.1
总结:要解决Java获取客户端IP返回127.0.0.1的问题,首先要找出原因,再采取合适的解决方案。请参考上述方案来改进代码,确保在各种网络环境下都能正确获取客户端IP地址。希望本文对您有所帮助。
810 25
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
467 5