反应式微服务间通信 vert.x(强调反应式)

reactive inter micro service communications vert.x (emphasis on reactive)

导航异步、非阻塞和反应性是一件很困难的事情…… 给定 2 个非阻塞、反应式、基于 vert.x/quarkus 的微服务 A 和 B,其中约束是 A 必须通过 http 与 B 通信。如果我想保持服务 A 反应(非阻塞):

  1. 我应该使用 vertx-web-client 吗?文档声明它是一个异步客户端,但我假设它也是基于 vert.x 的非阻塞? (我在这里区分异步和非阻塞)
  2. 在 Quarkus 中,我看到使用了特定于 Mutiny 的 vertx-web-client 的 clone/sibling。这是为了让我们可以使用 Mutiny 更高级别的 API(如 Uni/Multi)。我还会得到相同的非阻塞 'reactivity' 吗?
  3. Java 11 有一个新的 Web 客户端,它被描述为异步和反应式(我认为反应式是在支持反应流的意义上。不确定它是否是相同的意思)。如果我尝试在我的服务 A 中使用它来与 B 通信,我是否仍会获得非阻塞特性?或者它会破坏它,因为它不是基于 vert.x 并且不使用 netty 吗? 就像我说的那样,我的双手满满的,我的头脑在爆炸:)

任何帮助都会很棒。 谢谢

您可以使用 Vert.x Web 客户端,它具有异步和非阻塞 API。

Vert.x Web 客户端的 Mutiny API 适用于 Quarkus 和 Vert.x。 除了 API 基于 UniMulti.

之外,它与裸 Vert.x Web 客户端的工作方式相同

我对 JDK11 HTTP 客户端不是很了解。如果您的微服务 A 除了向微服务 B 发送 HTTP 请求之外什么都不做,那么也许使用 JDK HTTP 客户端就可以了。 但通常,微服务还接收消息(HTTP、Kafka 等)并与数据库交互。在这种情况下,利用 toolkit/framework.

的集成是有意义的