Vert.x - Verticles 和服务之间的区别

Vert.x - differences between Verticles and Services

我们几天前开始使用 vert.x。阅读文档(A gentle guide to asynchronous programming with Eclipse Vert.x for Java developer - https://vertx.io/docs/guide-for-java-devs/)我理解了verticle的概念。 我不明白的是 "service" 和 "service proxy":

的概念

“这是服务代理的主要目的。它让您可以在事件总线上公开服务,因此,任何其他 Vert.x 组件都可以使用它,只要他们知道发布服务的地址。 服务用 Java 接口描述,该接口包含遵循异步模式的方法。在幕后,消息在事件总线上发送以调用服务并获取响应。但是为了便于使用,它会生成一个代理,您可以直接调用它

但是,单个服务如何与 Verticle 和事件循环概念相关联? 它属于一个单独的独立 Verticle 并且它有他单独的事件循环还是属于一个特定的 Verticle? 我应该何时何地注册服务?在 Verticle 启动方法中还是在 main 方法中?

谢谢!

粒度级别相当自由,但基本上,一个 Verticle 可以以不同的方式(例如 )公开一个或多个服务(单例实现具有业务目的的接口)。

事件总线是允许 Verticles 在消息队列模型上异步通信的原生方式。

因此,一个 Verticle 可以通过监听一个或多个事件总线的通道(并在该通道上回复)来公开一个或多个服务,并且可以通过在事件总线上的其他通道上发送消息来调用其他一些 Verticle 公开的其他服务。

P.S :

1) 无需使用 vert.x 编写 main 方法(您可以使用 fat jar 中的 io.vertx.core.Launchervertx 可执行文件到 运行 你的主垂直)。

2) 您可以使用 fat jar 或 vertx 可执行文件中的 io.vertx.core.Launcher class 将所有 Verticle 作为单独的 pid 启动,或者您可以在主 Verticle 中启动多个 Verticle所以他们默认共享相同的事件循环(但你也可以声明一个工作池并根据 https://vertx.io/docs/vertx-core/java/#worker_verticles 使用 "worker verticles")。