nacos服务之间相互调用

服务之间相互调用

比如,订单服务需要调用库存服务。比如下订单前需要先明确是否有货,避免超订。相当于订单服务作为调用方,库存模块作为被调用方,订单服务调库存服务里面的一个接口,返回结果到订单服务。

一、库存为被调方

1、pom.xml文件。增加openfeign依赖

复制代码
  <!--  openfeign  -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、被调用函数

复制代码
@RestController
@RequestMapping("/stock")
public class StockController {
/*相当于订单服务作为调用方,库存模块作为被调用方,订单服务调库存服务里面的一个接口,返回结果到订单服务*/
    @RequestMapping("/test")
    public String test(String info){
        return "库存模块接收到的信息:"+info;
    }
}

二、主动调方-订单

1、一样,pom增加依赖

复制代码
  <!--  openfeign  -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、创建service

主要@FeignClient("nacos-stock"),定义被调用的服务名

@RequestMapping("/stock/test"),是服务的路径拼接

参数用@RequestParam比如

public String test(@RequestParam("info") String info);

复制代码
@RestController
@RequestMapping("/stock")
public class StockController {
/*相当于订单服务作为调用方,库存模块作为被调用方,订单服务调库存服务里面的一个接口,返回结果到订单服务*/
    @RequestMapping("/test")
    public String test(String info){
        return "库存模块接收到的信息:"+info;
    }
}

3、启动类增加包扫描注解,

@EnableFeignClients(basePackages = "com.java1234.feign")

public class NacosOrderApplication {

复制代码
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.java1234.feign")
public class NacosOrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosOrderApplication.class,args);
    }
}

4、测试controller

复制代码
@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private StockFeignService stockFeignService;

    @RequestMapping("/test")
    public String test(){
       return stockFeignService.test("牛逼");
    }
}

三、启动被调用服务-再启动主动调用服务

order日志

复制代码
2026-02-24 09:59:36.270  INFO 6028 --- [nio-8082-exec-1] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client nacos-stock initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=nacos-stock,current list of Servers=[本地IP地址:8089],Load balancer stats=Zone stats: {unknown=[Zone:unknown;	Instance count:1;	Active connections count: 0;	Circuit breaker tripped count: 0;	Active connections per server: 0.0;]
},Server stats: [[Server:本地IP地址:8089;	Zone:UNKNOWN;	Total Requests:0;	Successive connection failure:0;	Total blackout seconds:0;	Last connection made:Thu Jan 01 08:00:00 CST 1970;	First connection made: Thu Jan 01 08:00:00 CST 1970;	Active Connections:0;	total failure count in last (1000) msecs:0;	average resp time:0.0;	90 percentile resp time:0.0;	95 percentile resp time:0.0;	min resp time:0.0;	max resp time:0.0;	stddev resp time:0.0]
]}ServerList:com.alibaba.cloud.nacos.ribbon.NacosServerList@2a7c8035
相关推荐
Emily156853598703 分钟前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧5 小时前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡5 小时前
AI 应用系统设计
java·开发语言·人工智能
城管不管5 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅5 小时前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
AI绘画哇哒哒5 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
最强小杰6 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
今天AI了吗7 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
TELL5217 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
动词ing8 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法