Spring Boot - 微服务之间如何通信?

2024-04-25

我目前正在开发一个 Spring Boot 微服务项目。我创建了服务,每个服务都单独运行。这样,我需要一些服务来与其他服务进行通信。我怎样才能做到这一点?

我看到一些关于此的博客使用 Netflix、Eureka 云服务器来实现这一点。有什么方法可以在不使用云服务器的情况下在本地环境中实现此目的?


当然可以。 微服务只是 REST 服务。 您需要了解 REST 服务的工作原理。 之后,只需使用 Spring-boot 编写 2 个微服务(2 个 Rest-Services:生产者服务和消费者服务),让它们在不同的服务器端口下运行,从另一个服务器调用消费者服务,就是这样:你就有了微服务。 现在这就是编写微服务的原始方式。

为了让它们不断发展,您需要添加一些“魔法”(不是火箭科学),例如使用 Ribbon 在“生产者服务”的两个实例之间分配负载。

您可以使用发现服务,它只是一个带有注释 @EnableEurekaServer 的 spring-boot 应用程序(您需要在 pom 中添加适当的依赖项) 现在将注释 @EnableDiscoveryClient 添加到您的第一个(原始)微服务的主类中,并将 defaultZone 指向两者的 application.properties (或 application.yml)中的 eureka-service,启动您的 eureka-service (发现服务)并2 个微服务:它们将在发现服务上注册。当然,现在您不需要将生产者服务的http地址硬编码到消费者服务中。
看看这个教程 http://www.springboottutorial.com/creating-microservices-with-spring-boot-part-1-getting-started

编辑于 2018 年 11 月 21 日 12:41 GMT

假设您的第一个(简单的)微服务(纯休息服务)在您的 PC 上的端口 8091 下运行。

在第二个(简单)微服务的控制器中,您使用 RestTemplate.getForEntity(url,responseType,uriVariables) 调用第一个服务,就像链接教程中的示例一样:

ResponseEntity<CurrencyConversionBean> responseEntity = 
   new RestTemplate().getForEntity(
        "http://localhost:8091/currency-exchange/from/{from}/to/{to}", CurrencyConversionBean.class,  uriVariables);

在哪里 url:您的第一个(微)(其余)服务的 url。 responseType:等待响应的对象的类/类型。 uriVariables:是包含 URI 模板变量的映射。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot - 微服务之间如何通信? 的相关文章

随机推荐

  • Elastic Search 5.x 嵌套多个查询 C#

    我将 C 与这些 nuget 包一起使用
  • 有没有办法匹配规范中 Mockito 模拟对象的按名称调用参数?

    我正在使用一些方法测试一个对象和另一个对象之间的交互呼唤名字论据 但是 我不知道如何为该按名称调用参数创建参数匹配器 假设这是模拟对象的签名 def fn arg1 gt String arg2 Int Any 然后我真正想做的是测试是否使
  • 调整某一特定一侧的边框

    我正在使用 ListBox 的 controlTemplate 来显示集合 我想显示带有边框的所有项目 就像在网格中一样 所有行的大小相同 当我给每个 listBoxItem 一个边框时 两个项目之间的线具有双倍大小 由第一个项目的底部边框
  • 更改变量值 scss

    我在我的 scss 文件中定义了不同的变量 我在一些 scss 文件中使用了这些变量 变量 scss light theme rgba 94 161 215 0 3 dark theme 5EA1D7 darker theme 57647A
  • C# 管理窗口事件

    我想使用 C 从 Windows 事件日志中删除事件 谁能指出我如何实现这一目标的正确方向 Easy 但删除看起来像从数组中删除项目 您需要复制所有数组 但需要删除的项目除外 有一个示例 如何 从日志中删除项目具有非偶数索引的每个项目 us
  • 动画添加类/删除类?

    活生生的例子在这里 http timkjaerlange com foobar stack stuff august 18 2010 test html http timkjaerlange com foobar stack stuff a
  • 引用的项目在编译时“丢失”

    我有一个包含两个项目的 C 解决方案 一个服务 主项目 和一个记录器 该服务使用记录器中的类 我在服务项目中添加了对记录器项目的引用 在设计时 自动完成工作正常 记录器的类是可见的 我使用的引用具有适当的颜色 我重建解决方案 但出现问题 不
  • Firebase 错误地显示已删除的数据/Swift 3/Xcode 8.2

    我是编码新手 刚刚开始使用 Firebase 我正在运行以下函数 该函数基本上是尝试创建 2 个节点 锦标赛 和 每日游戏 如果它们尚不存在 数据库树应该如下所示 London City Game Date stringDate getti
  • PHP 正则表达式 [仅接受选定的字符]

    我想接受用户输入的字符列表并拒绝其余的 我可以接受格式化字 符串或查找是否缺少字符 字符串 但我如何才能只接受一组字符而拒绝所有其他字符 我想使用 preg match 来做到这一点 例如允许的字符有 a z A Z 用户必须能够以任何顺序
  • 使用 Google 的 Gson 进行严格的 JSON 解析?

    假设我正在使用 Google 的 Gson 库将 JSON 解析为 Java 数据结构 如果 Java 字段没有对应的 JSON 是否有简单的方法抛出异常 也就是说 我希望要求 JSON 具有 Java 结构中的所有字段 Gson 没有 J
  • JSLint 错误:将调用移至包含该函数的括号中

    我怎样才能让这个代码 jsLint 快乐 function window document undefined some code jQuery window document 它建议我这样写 会有什么不同吗 我该怎么办 function
  • 如何在 WPF 中的窗口上绘图(最佳实践)?

    我正在尝试编写一个类似交互式游戏的小型应用程序 我需要有一个Draw方法将在屏幕上绘制 但无法弄清楚如何构造 WPF 的方法 如果这是Winforms 我可以使用 public void Draw Graphics g 但对于一个WPF W
  • 我的 java 应用程序不读取我的文件(maven 项目)

    我有一个 Java 简单项目中的应用程序 但是 我需要将此项目粘贴到 Maven 项目中 因此 我基本上制作了一个简单的 Maven 项目 并将所有类复制并粘贴到其中 我需要在服务器中运行一个war 并且我需要像Java应用程序一样运行Ma
  • 从头开始创建 mp3 文件 C#

    作为一些实验的一部分 我想到了一些事情 如何在 C 中从头开始创建一个 mp3 文件 这实际上听起来像什么 例如 创建一个播放音符的 mp3 文件 C 或 B 降调 我怎样才能实现这一点 它必须是 mp3 文件 而不是 wav 或其他任何文
  • Python 寻求读取不断增长的文件

    我编写了一个 python 脚本 使用任务计划程序每 5 分钟运行一次 读取不断增长的日志文件 文本文件 并将数据插入数据库 每天生成新的日志文件 我需要修改它并在最后一行的末尾放置一个指针 因此当调度程序再次运行时 它会在最后插入的行之后
  • 普遍接受的变量名称格式 - C/C++

    我意识到这可能是一个偏好问题 但我注意到我见过的很多代码示例中的变量名称都有前缀g s m 要不就 这是一种普遍接受的做法吗 这些前缀的含义是什么 还有其他值得了解的吗 g 是一个全局变量 s 是一个静态的 m 是一个成员 实例变量 是成员
  • 如何在cocos2dx 3.0中调用callfunc函数

    我必须将 Objective C 转换为 C 11 我坚持使用以下语法 我已在 testcpp 中引用并尝试以下语法 这是我尝试过的代码 this gt runAction Sequence create blink CallFunc cr
  • Reset.css 在 IE7/IE6 中覆盖 colgroup 背景

    我有一个表 其中的列具有由 colgroup 设置的不同背景 然而 在 IE6 7 中 它完全忽略 colgroup 背景并采用单元格的 Reset css 背景值 即背景 透明 如何解决此问题 而无需转到每个单元格并手动输入背景值 HTM
  • 安装期间初始化 user.config 或 app.exe.config

    我正在开发一个 NET WinForms 应用程序 它依赖于 user config 来存储各种有用的设置 例如 Intranet Web 服务 URL 我们希望能够在安装过程中导入自定义初始设置 其用例是 如果一家公司想要在 100 台计
  • Spring Boot - 微服务之间如何通信?

    我目前正在开发一个 Spring Boot 微服务项目 我创建了服务 每个服务都单独运行 这样 我需要一些服务来与其他服务进行通信 我怎样才能做到这一点 我看到一些关于此的博客使用 Netflix Eureka 云服务器来实现这一点 有什么