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看起来调用更简单一些。

相关推荐
worilb25 分钟前
Spring Cloud 学习与实践(13):使用 Seata 解决分布式事务问题
分布式·学习·spring cloud
豆瓣鸡1 小时前
网关、服务 userId 透传
java·微服务·gateway
Devin~Y1 小时前
电商场景下的Java面试实战:从Spring Boot微服务到Kafka、Redis与AI RAG
java·spring boot·redis·elasticsearch·spring cloud·微服务·kafka
SizeTheMoment2 小时前
Spring Cloud 微服务认证体系深度解析:从架构设计到安全实践
安全·spring cloud·微服务
山东点狮信息科技有限公司4 小时前
企业级应用双模式部署架构设计:从单体到微服务的平滑演进
运维·微服务·架构
doiito(Do It Together)4 小时前
【安全,架构】RustyVault 项目深度分析报告以及和HashiCorp Vault的差异
微服务·架构·rust
万里侯17 小时前
GitOps 漂移检测:集群里改了配置,Git 还以为一切正常
微服务·容器·k8s
Geek-Chow20 小时前
微服务认证与授权: 12 — JWKS 深入解析
spring·微服务·安全架构
CHrisFC1 天前
2026-07-15-csdn-硕晟LIMS微服务架构设计
微服务·云原生·架构
长不胖的路人甲1 天前
微服务限流
微服务·云原生·架构