一个Spring Boot微服务如何知道如何将POST发送到另一服务?

问题描述

在本教程(Spring Cloud Microservices)中,此存储库中的代码用于说明示例:

https://github.com/saturnism/spring-cloud-gcp-guestbook/tree/master/1-bootstrap

在回购中,使用Spring Boot找到了两个Maven项目(guestbook-frontend和guestbook-service)。两者都作为服务运行。通过前端服务,可以将消息发布到后端服务。我的问题是,它在哪里进行配置,以便前端知道POST的去向?两者之间的联系在哪里?

解决方法

在中检查@FeignClient批注

https://github.com/saturnism/spring-cloud-gcp-guestbook/blob/master/1-bootstrap/guestbook-frontend/src/main/java/com/example/frontend/GuestbookMessagesClient.java
,

为了详细解释这个问题,我将重点介绍微服务的核心模式

  1. 核心开发模式
  2. 路由模式
  3. 客户弹性模式
  4. 安全模式
  5. 记录和跟踪模式
  6. 构建和部署模式

以上提到的模式用于处理我们转向微服务时出现的问题。您的问题突出显示的问题之一是“我们永远无法确定哪台机器将运行我们的微服务”。解决此问题的一种幼稚方法是我们维护某种地图,其中包含机器及其服务的所有详细信息。为了在服务之间建立通信,我们可以使用该地图。但是这种方法很幼稚,并且有其自身的问题。

因此,为了解决这个问题,我们将不得不使用路由模式。在路由模式中,有一个服务发现的概念,不同平台提供了多种服务发现方法。例如:Netflix提供了Eureka和Feign Client,后来在Spring Cloud中添加了它; HashiCorp提供了Consul服务发现功能; AWS ECS也具有其服务发现机制。

已经说过,我可以得出结论,有多种方法可以从spring-boot的一个微服务中调用另一个服务。但是,由于您更加关注Spring Cloud,因此在Spring Cloud中,您将需要 Eureka Server和Feign Client 。将它们添加到您的项目中非常简单。

您可以按照本教程使用Eureka和Feign Client https://dzone.com/articles/microservices-communication-feign-as-rest-client

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...