首页 > 其他分享 >服务间通信(RPC)的方式

服务间通信(RPC)的方式

时间:2024-07-18 13:27:50浏览次数:14  
标签:Map 服务 users RestTemplate class 间通信 RPC put public

一、FeignClient

1.导入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>4.1.0</version>
</dependency>

 2.在启动类加入注解

@EnableFeignClients
public class S99UserApplication {

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

}

3.编写代码

  • 新建一个UserController,使用RestController注解,因为要返回数据。
  • 编写一个数据接口,方便调用。
  • 因为要通过用户来调用订单的数据,所以在用户类里定义一个接口(interface),并且使用FeignClient注解指定要调用的服务名称。
  • 在这个接口里定义一个RequestMapping,注意,这里的路径要和被调用服务的数据的路径一致。
  • 在UserController里用Autowired注解装配接口。
  • 调用
@RestController
public class UserController
{

    @Autowired
    OrderService orderService;

    @RequestMapping("/getUsers")
    public Map getUserInfo()
    {
        Map users=new HashMap();
        users.put("姓名","小满");
        users.put("学号","123345");
        users.put("订单",orderService.getOrders());
        return users;
    }
}

@FeignClient("S99-Order")
public interface OrderService
{
    @RequestMapping ("/ord")
    Map getOrders();
}

 二、RestTemplate

1.在启动类注册RestTemplate到IOC容器,并开启负载均衡

@SpringBootApplication
@EnableDiscoveryClient//开启服务发现功能
public class S99OrderApplication
{

    //注册RestTemplate到ioc容器
    @Bean
    @LoadBalanced//开启负载均衡
    RestTemplate restTemplate()
    {
        return new RestTemplate();
    }

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

}

 2.编写代码

@RestController
public class OrderController
{
    //@Resource
    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("/ord")
    public Map getUserInfo()
    {
        String produrl="http://S99-Products/prods";//!!!!!!
        Map prods = restTemplate.getForObject(produrl, Map.class);
        Map ords=new HashMap();
        ords.put("订单编号","1");
        ords.put("产品",prods);
        return ords;
    }
}

 值得注意的是,produrl这里不能指定具体的地址,容易导致服务崩溃!!!

 三、结果查看


标签:Map,服务,users,RestTemplate,class,间通信,RPC,put,public
From: https://blog.csdn.net/weixin_63867965/article/details/140450460

相关文章

  • NTP时间同步服务器(卫星时钟同步装置)基本架构介绍
    NTP时间同步服务器(卫星时钟同步装置)基本架构介绍NTP时间同步服务器(卫星时钟同步装置)基本架构介绍京准电钟官微——ahjzsz摘要:基于北斗的全球卫星系统(BDS)的高精度同步时钟信号在电网广域测量系统(WAMS)等很多领域具有广泛用途;但在实际应用中存在因卫星失锁等原因导致同步时钟信号......
  • 深入解析微服务架构之Spring Cloud
    目录微服务架构简介什么是微服务微服务的优势微服务的挑战SpringCloud概述SpringCloud简介SpringCloud的主要特性SpringCloud的模块划分SpringCloud核心组件详解SpringCloudNetflixSpringCloudConfigSpringCloudGatewaySpringCloudSleuthSpringCloudBu......
  • 服务器环境搭建
    服务器环境搭建概述:1.jdk环境(1.8)2.nginx(1.22.1)3.mysql(5.7.39)4.es7.5.15.activitymq5.16.56.redis2.8.17 安装包位置/usr/local/src/软件安装位置/usr/local/opt/   1. jdk环境Version:1.8安装包:jdk-8u401-linux-i586.tar.gz安装包下载地址:......
  • Eureka: 分布式系统中的服务发现与注册中心
    引言在现代分布式系统中,微服务架构已经成为主流。随着系统规模的扩大,服务间的通信和管理变得愈发复杂。服务发现机制在这种环境下显得尤为重要。Eureka,作为Netflix开源的服务发现与注册中心,提供了一种高效、可靠的解决方案。本文将深入探讨Eureka的架构、工作原理、性能表......
  • sqlserver 在尝试加载程序集 ID 65537 时 Microsoft .NET Framework 出错.服务器可能
    报错信息:1234567891011处理报表时出错。对数据集“query”执行查询失败。在尝试加载程序集ID65536时Microsoft.NETFramework出错。服务器可能资源不足,或者不信任该程序集,因为它的PERMISSION_SET设置为EXTERNAL_ACCESS或UNSAFE。请重新运行查......
  • 【Web服务与Web应用开发】【C#】VS2019 创建ASP.NET Web应用程序,以使用WCF服务
    目录0.简介1.环境2.知识点3.详细过程1)创建空项目2)添加Web表单3)使用Web表单的GUI设计4)添加服务引用5)在Web的button函数中调用服务,获取PI值6)测试0.简介本文属于一个系列中的第二篇文章,这个系列会实现一个项目,这个项目主要使用VisualStudio2019作为开发工具,创建WC......
  • 如何备份服务器上的重要数据到外部存储设备呢
    备份服务器上的重要数据到外部存储设备是确保数据安全的重要步骤。以下是详细的备份步骤和注意事项:一、选择合适的外部存储设备类型选择:U盘:适用于小量数据的备份,因其便携性和价格优势。但需注意其容量限制,可能不适用于大规模数据备份。移动硬盘:适用于中等至大规模数据的备份。......
  • 服务器硬盘指示灯显示黄色的数据恢复
    服务器硬盘指示灯显示黄色通常是一种警告,表明对应的服务器硬盘已经被服务器识别出存在故障,硬盘即将下线。在这种情况下,进行数据恢复需要谨慎操作,以下是一个详细的数据恢复流程:一、初步检查和准备1.确认故障硬盘:1.检查服务器面板上的硬盘指示灯,确认哪些硬盘的指示灯显示黄色。2......
  • linux 怎么同步下服务器时间?
    在Linux系统中,同步服务器时间可以通过多种方式实现。以下是常见的几种方法:方法1:使用ntpdatentpdate是一个命令行工具,用于手动同步系统时间。要使用ntpdate,请按照以下步骤操作:安装ntpdate对于Debian/Ubuntu系统:sudoaptupdatesudoaptinstallntpdate对于CentOS/RH......
  • 深入探讨:Node.js、Vue、SSH服务与SSH免密登录
    深入探讨:Node.js、Vue、SSH服务与SSH免密登录在这篇博客中,我们将深入探讨如何在项目中使用Node.js和Vue,并配置SSH服务以及实现SSH免密登录。我们会一步步地进行讲解,并提供代码示例,确保你能轻松上手。一、Node.js与Vue的结合1.1Node.js简介Node.js是一个基于ChromeV8......