spring cloud 微服务部署(2025年)第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

【spring cloud 3.0微服务部署】第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

  • 链接
    • 第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署
    • 第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署
    • 第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署
    • 第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon
    • 查看源码
  • 正文
    • 接前章
    • 微服务myapp1调用myapp2
    • RestTemplate 发送json

链接

第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署

第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署

第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署

第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

查看源码

正文

接前章

微服务myapp1调用myapp2

修改MyApp1Controller.java,新增getApp2接口

bash 复制代码
package com.que5;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

/**
 * <p>
 * 用户列表 前端控制器
 * </p>
 *
 * @author evan
 * @since 2024-11-28
 */
@RestController
@RequestMapping("/cloud")
public class MyApp1Controller {

    @Value("${server.port}")
    private Integer port;
    @Value("${spring.application.name}")
    private String name;
    @GetMapping("/hello")
    public String hello(@RequestParam(name = "msg",required = false) String msg) {
        return "hello name:"+name+",port:"+port + " msg:" + msg;
    }

    @Resource
    RestTemplate restTemplate;
    @GetMapping("/getApp2")
    public String getApp2() {

        return "getApp2:"+restTemplate.getForObject("http://myapp2/cloud/hello?msg=我来自myapp1",String.class);
    }
}

RestTemplate 发送json

GET请求:getForObject

POST请求:postForObject

bash 复制代码
HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<>(json, headers);
        
        String result = restTemplate.postForObject(url, entity, String.class); // 或者使用exchange方法获取更详细的响应信息
        System.out.println(result);

结语: ribbon是nacos默认集成,所以不需要额外引入,没有用open feign是因为想精简一些,虽然open feign看起来调用更简单一些。

相关推荐
猿小羽39 分钟前
深入理解 Microservice Control Proxy(MCP) 的 AI 实战指南
微服务·ai·推荐系统·service mesh·microservice·mcp·ai 实战
掘根3 小时前
【即时通讯系统】项目框架与微服务拆分设计
微服务·云原生·架构
编程彩机4 小时前
互联网大厂Java面试:从分布式事务到微服务优化的技术场景解读
java·spring boot·redis·微服务·面试·kafka·分布式事务
编程彩机4 小时前
互联网大厂Java面试:从Spring WebFlux到分布式事务的技术场景解析
java·微服务·面试·分布式事务·spring webflux
造夢先森4 小时前
Clawdbot(OpenClaw)安装部署教程
人工智能·微服务·云原生
m0_740043731 天前
【无标题】
java·spring boot·spring·spring cloud·微服务
编程彩机1 天前
互联网大厂Java面试:从微服务到分布式缓存的技术场景解析
redis·spring cloud·消息队列·微服务架构·openfeign·java面试·分布式缓存
Gary董1 天前
高并发的微服务架构如何设计
微服务·云原生·架构
像少年啦飞驰点、1 天前
零基础入门 Spring Boot:从“Hello World”到可部署微服务的完整学习路径
java·spring boot·微服务·编程入门·后端开发
java干货1 天前
微服务:把一个简单的问题,拆成 100 个网络问题
网络·微服务·架构